home *** CD-ROM | disk | FTP | other *** search
Wrap
/* File: QuickTimeComponents.h Copyright: © 1991-1994 by Apple Computer, Inc., all rights reserved. */ #ifndef __QUICKTIMECOMPONENTS__ #define __QUICKTIMECOMPONENTS__ #ifndef __COMPONENTS__ #include <Components.h> /* #include <Types.h> */ /* #include <ConditionalMacros.h> */ /* #include <MixedMode.h> */ /* #include <Traps.h> */ #endif #ifndef __IMAGECOMPRESSION__ #include <ImageCompression.h> /* #include <Quickdraw.h> */ /* #include <QuickdrawText.h> */ /* #include <IntlResources.h> */ /* #include <QDOffscreen.h> */ /* #include <StandardFile.h> */ /* #include <Dialogs.h> */ /* #include <Windows.h> */ /* #include <Events.h> */ /* #include <OSUtils.h> */ /* #include <Controls.h> */ /* #include <Menus.h> */ /* #include <TextEdit.h> */ /* #include <Files.h> */ /* #include <SegLoad.h> */ /* #include <ToolUtils.h> */ /* #include <TextUtils.h> */ /* #include <Script.h> */ /* #include <FixMath.h> */ #endif #ifndef __MOVIES__ #include <Movies.h> /* #include <Aliases.h> */ /* #include <AppleTalk.h> */ #endif #ifndef __QUICKDRAW__ #endif #ifndef __VIDEO__ #include <Video.h> #endif #ifndef __Dialogs__ #endif #define clockComponentType 'clok' #define systemTickClock 'tick' #define systemSecondClock 'seco' #define systemMillisecondClock 'mill' #define systemMicrosecondClock 'micr' enum { kClockRateIsLinear = 1, kClockImplementsCallBacks = 2 }; #define ClockGetTime GetClockTime #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult GetClockTime(ComponentInstance aClock, TimeRecord *out) FIVEWORDINLINE(0x2F3C, 0x4, 0x1, 0x7000, 0xA82A); extern pascal QTCallBack ClockNewCallBack(ComponentInstance aClock, TimeBase tb, short callBackType) FIVEWORDINLINE(0x2F3C, 0x6, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult ClockDisposeCallBack(ComponentInstance aClock, QTCallBack cb) FIVEWORDINLINE(0x2F3C, 0x4, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult ClockCallMeWhen(ComponentInstance aClock, QTCallBack cb, long param1, long param2, long param3) FIVEWORDINLINE(0x2F3C, 0x10, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult ClockCancelCallBack(ComponentInstance aClock, QTCallBack cb) FIVEWORDINLINE(0x2F3C, 0x4, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult ClockRateChanged(ComponentInstance aClock, QTCallBack cb) FIVEWORDINLINE(0x2F3C, 0x4, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult ClockTimeChanged(ComponentInstance aClock, QTCallBack cb) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult ClockSetTimeBase(ComponentInstance aClock, TimeBase tb) FIVEWORDINLINE(0x2F3C, 0x4, 0x8, 0x7000, 0xA82A); extern pascal ComponentResult ClockStartStopChanged(ComponentInstance aClock, QTCallBack cb, Boolean startChanged, Boolean stopChanged) FIVEWORDINLINE(0x2F3C, 0x8, 0x9, 0x7000, 0xA82A); extern pascal ComponentResult ClockGetRate(ComponentInstance aClock, Fixed *rate) FIVEWORDINLINE(0x2F3C, 0x4, 0xA, 0x7000, 0xA82A); #ifdef __cplusplus } #endif enum { kClockGetTimeSelect = 0x1, kClockNewCallBackSelect = 0x2, kClockDisposeCallBackSelect = 0x3, kClockCallMeWhenSelect = 0x4, kClockCancelCallBackSelect = 0x5, kClockRateChangedSelect = 0x6, kClockTimeChangedSelect = 0x7, kClockSetTimeBaseSelect = 0x8, kClockStartStopChangedSelect = 0x9, kClockGetRateSelect = 0xA }; typedef ComponentInstance SeqGrabComponent; typedef ComponentInstance SGChannel; #define SeqGrabComponentType 'barg' #define SeqGrabChannelType 'sgch' #define SeqGrabPanelType 'sgpn' #define SeqGrabCompressionPanelType 'comp' #define SeqGrabSourcePanelType 'sour' enum { seqGrabToDisk = 1, seqGrabToMemory = 2, seqGrabDontUseTempMemory = 4, seqGrabAppendToFile = 8, seqGrabDontAddMovieResource = 16, seqGrabDontMakeMovie = 32, seqGrabPreExtendFile = 64, seqGrabDataProcIsInterruptSafe = 128, seqGrabDataProcDoesOverlappingReads = 256 }; typedef unsigned long SeqGrabDataOutputEnum; enum { seqGrabRecord = 1, seqGrabPreview = 2, seqGrabPlayDuringRecord = 4 }; typedef unsigned long SeqGrabUsageEnum; enum { seqGrabHasBounds = 1, seqGrabHasVolume = 2, seqGrabHasDiscreteSamples = 4 }; typedef unsigned long SeqGrabChannelInfoEnum; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct seqGrabFrameInfo { long frameOffset; long frameTime; long frameSize; SGChannel frameChannel; long frameRefCon; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct seqGrabFrameInfo seqGrabFrameInfo; enum { grabPictOffScreen = 1, grabPictIgnoreClip = 2, grabPictCurrentImage = 4 }; #define sgFlagControlledGrab (1) typedef pascal OSErr (*SGDataProcPtr)(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon); enum { uppSGDataProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long*))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(TimeValue))) | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGDataUPP; #define CallSGDataProc(userRoutine, c, p, len, offset, chRefCon, time, writeType, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGDataProcInfo, (c), (p), (len), (offset), (chRefCon), (time), (writeType), (refCon)) #define NewSGDataProc(userRoutine) \ (SGDataUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGDataProcInfo, GetCurrentISA()) #else typedef SGDataProcPtr SGDataUPP; #define CallSGDataProc(userRoutine, c, p, len, offset, chRefCon, time, writeType, refCon) \ (*(userRoutine))((c), (p), (len), (offset), (chRefCon), (time), (writeType), (refCon)) #define NewSGDataProc(userRoutine) \ (SGDataUPP)(userRoutine) #endif #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SGDeviceName { Str63 name; Handle icon; long flags; long refCon; long reserved; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SGDeviceName SGDeviceName; #define sgDeviceNameFlagDeviceUnavailable (1) #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SGDeviceListRecord { short count; short selectedIndex; long reserved; SGDeviceName entry[1]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SGDeviceListRecord SGDeviceListRecord; typedef SGDeviceListRecord *SGDeviceListPtr, **SGDeviceList; #define sgDeviceListWithIcons (1) #define sgDeviceListDontCheckAvailability (2) enum { seqGrabWriteAppend, seqGrabWriteReserve, seqGrabWriteFill }; enum { seqGrabUnpause = 0, seqGrabPause = 1, seqGrabPauseForMenu = 3 }; enum { channelFlagDontOpenResFile = 2, channelFlagHasDependency = 4 }; typedef pascal Boolean (*SGModalFilterProcPtr)(DialogPtr theDialog, EventRecord *theEvent, short *itemHit, long refCon); enum { uppSGModalFilterProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGModalFilterUPP; #define CallSGModalFilterProc(userRoutine, theDialog, theEvent, itemHit, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGModalFilterProcInfo, (theDialog), (theEvent), (itemHit), (refCon)) #define NewSGModalFilterProc(userRoutine) \ (SGModalFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGModalFilterProcInfo, GetCurrentISA()) #else typedef SGModalFilterProcPtr SGModalFilterUPP; #define CallSGModalFilterProc(userRoutine, theDialog, theEvent, itemHit, refCon) \ (*(userRoutine))((theDialog), (theEvent), (itemHit), (refCon)) #define NewSGModalFilterProc(userRoutine) \ (SGModalFilterUPP)(userRoutine) #endif enum { sgPanelFlagForPanel = 1 }; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SGOutputRecord { long data[1]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SGOutputRecord SGOutputRecord; typedef SGOutputRecord *SGOutput; #define channelPlayNormal 0 #define channelPlayFast 1 #define channelPlayHighQuality 2 #define channelPlayAllData 4 #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult SGInitialize(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x1, 0x7000, 0xA82A); extern pascal ComponentResult SGSetDataOutput(SeqGrabComponent s, FSSpec *movieFile, long whereFlags) FIVEWORDINLINE(0x2F3C, 0x8, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult SGGetDataOutput(SeqGrabComponent s, FSSpec *movieFile, long *whereFlags) FIVEWORDINLINE(0x2F3C, 0x8, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult SGSetGWorld(SeqGrabComponent s, CGrafPtr gp, GDHandle gd) FIVEWORDINLINE(0x2F3C, 0x8, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult SGGetGWorld(SeqGrabComponent s, CGrafPtr *gp, GDHandle *gd) FIVEWORDINLINE(0x2F3C, 0x8, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult SGNewChannel(SeqGrabComponent s, OSType channelType, SGChannel *ref) FIVEWORDINLINE(0x2F3C, 0x8, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult SGDisposeChannel(SeqGrabComponent s, SGChannel c) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult SGStartPreview(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult SGStartRecord(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x11, 0x7000, 0xA82A); extern pascal ComponentResult SGIdle(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x12, 0x7000, 0xA82A); extern pascal ComponentResult SGStop(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x13, 0x7000, 0xA82A); extern pascal ComponentResult SGPause(SeqGrabComponent s, Byte pause) FIVEWORDINLINE(0x2F3C, 0x2, 0x14, 0x7000, 0xA82A); extern pascal ComponentResult SGPrepare(SeqGrabComponent s, Boolean prepareForPreview, Boolean prepareForRecord) FIVEWORDINLINE(0x2F3C, 0x4, 0x15, 0x7000, 0xA82A); extern pascal ComponentResult SGRelease(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x16, 0x7000, 0xA82A); extern pascal Movie SGGetMovie(SeqGrabComponent s) FIVEWORDINLINE(0x2F3C, 0, 0x17, 0x7000, 0xA82A); extern pascal ComponentResult SGSetMaximumRecordTime(SeqGrabComponent s, unsigned long ticks) FIVEWORDINLINE(0x2F3C, 0x4, 0x18, 0x7000, 0xA82A); extern pascal ComponentResult SGGetMaximumRecordTime(SeqGrabComponent s, unsigned long *ticks) FIVEWORDINLINE(0x2F3C, 0x4, 0x19, 0x7000, 0xA82A); extern pascal ComponentResult SGGetStorageSpaceRemaining(SeqGrabComponent s, unsigned long *bytes) FIVEWORDINLINE(0x2F3C, 0x4, 0x1A, 0x7000, 0xA82A); extern pascal ComponentResult SGGetTimeRemaining(SeqGrabComponent s, long *ticksLeft) FIVEWORDINLINE(0x2F3C, 0x4, 0x1B, 0x7000, 0xA82A); extern pascal ComponentResult SGGrabPict(SeqGrabComponent s, PicHandle *p, const Rect *bounds, short offscreenDepth, long grabPictFlags) FIVEWORDINLINE(0x2F3C, 0xE, 0x1C, 0x7000, 0xA82A); extern pascal ComponentResult SGGetLastMovieResID(SeqGrabComponent s, short *resID) FIVEWORDINLINE(0x2F3C, 0x4, 0x1D, 0x7000, 0xA82A); extern pascal ComponentResult SGSetFlags(SeqGrabComponent s, long sgFlags) FIVEWORDINLINE(0x2F3C, 0x4, 0x1E, 0x7000, 0xA82A); extern pascal ComponentResult SGGetFlags(SeqGrabComponent s, long *sgFlags) FIVEWORDINLINE(0x2F3C, 0x4, 0x1F, 0x7000, 0xA82A); extern pascal ComponentResult SGSetDataProc(SeqGrabComponent s, SGDataUPP proc, long refCon) FIVEWORDINLINE(0x2F3C, 0x8, 0x20, 0x7000, 0xA82A); extern pascal ComponentResult SGNewChannelFromComponent(SeqGrabComponent s, SGChannel *newChannel, Component sgChannelComponent) FIVEWORDINLINE(0x2F3C, 0x8, 0x21, 0x7000, 0xA82A); extern pascal ComponentResult SGDisposeDeviceList(SeqGrabComponent s, SGDeviceList list) FIVEWORDINLINE(0x2F3C, 0x4, 0x22, 0x7000, 0xA82A); extern pascal ComponentResult SGAppendDeviceListToMenu(SeqGrabComponent s, SGDeviceList list, MenuHandle mh) FIVEWORDINLINE(0x2F3C, 0x8, 0x23, 0x7000, 0xA82A); extern pascal ComponentResult SGSetSettings(SeqGrabComponent s, UserData ud, long flags) FIVEWORDINLINE(0x2F3C, 0x8, 0x24, 0x7000, 0xA82A); extern pascal ComponentResult SGGetSettings(SeqGrabComponent s, UserData *ud, long flags) FIVEWORDINLINE(0x2F3C, 0x8, 0x25, 0x7000, 0xA82A); extern pascal ComponentResult SGGetIndChannel(SeqGrabComponent s, short index, SGChannel *ref, OSType *chanType) FIVEWORDINLINE(0x2F3C, 0xA, 0x26, 0x7000, 0xA82A); extern pascal ComponentResult SGUpdate(SeqGrabComponent s, RgnHandle updateRgn) FIVEWORDINLINE(0x2F3C, 0x4, 0x27, 0x7000, 0xA82A); extern pascal ComponentResult SGGetPause(SeqGrabComponent s, Byte *paused) FIVEWORDINLINE(0x2F3C, 0x4, 0x28, 0x7000, 0xA82A); extern pascal ComponentResult SGSettingsDialog(SeqGrabComponent s, SGChannel c, short numPanels, Component *panelList, long flags, SGModalFilterUPP proc, long procRefNum) FIVEWORDINLINE(0x2F3C, 0x16, 0x29, 0x7000, 0xA82A); extern pascal ComponentResult SGGetAlignmentProc(SeqGrabComponent s, ICMAlignmentProcRecordPtr alignmentProc) FIVEWORDINLINE(0x2F3C, 0x4, 0x2A, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelSettings(SeqGrabComponent s, SGChannel c, UserData ud, long flags) FIVEWORDINLINE(0x2F3C, 0xC, 0x2B, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelSettings(SeqGrabComponent s, SGChannel c, UserData *ud, long flags) FIVEWORDINLINE(0x2F3C, 0xC, 0x2C, 0x7000, 0xA82A); extern pascal ComponentResult SGGetMode(SeqGrabComponent s, Boolean *previewMode, Boolean *recordMode) FIVEWORDINLINE(0x2F3C, 0x8, 0x2D, 0x7000, 0xA82A); extern pascal ComponentResult SGSetDataRef(SeqGrabComponent s, Handle dataRef, OSType dataRefType, long whereFlags) FIVEWORDINLINE(0x2F3C, 0xC, 0x2E, 0x7000, 0xA82A); extern pascal ComponentResult SGGetDataRef(SeqGrabComponent s, Handle *dataRef, OSType *dataRefType, long *whereFlags) FIVEWORDINLINE(0x2F3C, 0xC, 0x2F, 0x7000, 0xA82A); extern pascal ComponentResult SGNewOutput(SeqGrabComponent s, Handle dataRef, OSType dataRefType, long whereFlags, SGOutput *output) FIVEWORDINLINE(0x2F3C, 0x10, 0x30, 0x7000, 0xA82A); extern pascal ComponentResult SGDisposeOutput(SeqGrabComponent s, SGOutput output) FIVEWORDINLINE(0x2F3C, 0x4, 0x31, 0x7000, 0xA82A); extern pascal ComponentResult SGSetOutputFlags(SeqGrabComponent s, SGOutput output, long whereFlags) FIVEWORDINLINE(0x2F3C, 0x8, 0x32, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelOutput(SeqGrabComponent s, SGChannel c, SGOutput output) FIVEWORDINLINE(0x2F3C, 0x8, 0x33, 0x7000, 0xA82A); extern pascal ComponentResult SGGetDataOutputStorageSpaceRemaining(SeqGrabComponent s, SGOutput output, unsigned long *space) FIVEWORDINLINE(0x2F3C, 0x8, 0x34, 0x7000, 0xA82A); extern pascal ComponentResult SGWriteMovieData(SeqGrabComponent s, SGChannel c, Ptr p, long len, long *offset) FIVEWORDINLINE(0x2F3C, 0x10, 0x100, 0x7000, 0xA82A); extern pascal ComponentResult SGAddFrameReference(SeqGrabComponent s, seqGrabFrameInfo *frameInfo) FIVEWORDINLINE(0x2F3C, 0x4, 0x101, 0x7000, 0xA82A); extern pascal ComponentResult SGGetNextFrameReference(SeqGrabComponent s, seqGrabFrameInfo *frameInfo, TimeValue *frameDuration, long *frameNumber) FIVEWORDINLINE(0x2F3C, 0xC, 0x102, 0x7000, 0xA82A); extern pascal ComponentResult SGGetTimeBase(SeqGrabComponent s, TimeBase *tb) FIVEWORDINLINE(0x2F3C, 0x4, 0x103, 0x7000, 0xA82A); extern pascal ComponentResult SGSortDeviceList(SeqGrabComponent s, SGDeviceList list) FIVEWORDINLINE(0x2F3C, 0x4, 0x104, 0x7000, 0xA82A); extern pascal ComponentResult SGAddMovieData(SeqGrabComponent s, SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType) FIVEWORDINLINE(0x2F3C, 0x1A, 0x105, 0x7000, 0xA82A); extern pascal ComponentResult SGChangedSource(SeqGrabComponent s, SGChannel c) FIVEWORDINLINE(0x2F3C, 0x4, 0x106, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelUsage(SGChannel c, long usage) FIVEWORDINLINE(0x2F3C, 0x4, 0x80, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelUsage(SGChannel c, long *usage) FIVEWORDINLINE(0x2F3C, 0x4, 0x81, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelBounds(SGChannel c, const Rect *bounds) FIVEWORDINLINE(0x2F3C, 0x4, 0x82, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelBounds(SGChannel c, Rect *bounds) FIVEWORDINLINE(0x2F3C, 0x4, 0x83, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelVolume(SGChannel c, short volume) FIVEWORDINLINE(0x2F3C, 0x2, 0x84, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelVolume(SGChannel c, short *volume) FIVEWORDINLINE(0x2F3C, 0x4, 0x85, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelInfo(SGChannel c, long *channelInfo) FIVEWORDINLINE(0x2F3C, 0x4, 0x86, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelPlayFlags(SGChannel c, long playFlags) FIVEWORDINLINE(0x2F3C, 0x4, 0x87, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelPlayFlags(SGChannel c, long *playFlags) FIVEWORDINLINE(0x2F3C, 0x4, 0x88, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelMaxFrames(SGChannel c, long frameCount) FIVEWORDINLINE(0x2F3C, 0x4, 0x89, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelMaxFrames(SGChannel c, long *frameCount) FIVEWORDINLINE(0x2F3C, 0x4, 0x8A, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelRefCon(SGChannel c, long refCon) FIVEWORDINLINE(0x2F3C, 0x4, 0x8B, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelClip(SGChannel c, RgnHandle theClip) FIVEWORDINLINE(0x2F3C, 0x4, 0x8C, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelClip(SGChannel c, RgnHandle *theClip) FIVEWORDINLINE(0x2F3C, 0x4, 0x8D, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelSampleDescription(SGChannel c, Handle sampleDesc) FIVEWORDINLINE(0x2F3C, 0x4, 0x8E, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelDeviceList(SGChannel c, long selectionFlags, SGDeviceList *list) FIVEWORDINLINE(0x2F3C, 0x8, 0x8F, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelDevice(SGChannel c, StringPtr name) FIVEWORDINLINE(0x2F3C, 0x4, 0x90, 0x7000, 0xA82A); extern pascal ComponentResult SGSetChannelMatrix(SGChannel c, const MatrixRecord *m) FIVEWORDINLINE(0x2F3C, 0x4, 0x91, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelMatrix(SGChannel c, MatrixRecord *m) FIVEWORDINLINE(0x2F3C, 0x4, 0x92, 0x7000, 0xA82A); extern pascal ComponentResult SGGetChannelTimeScale(SGChannel c, TimeScale *scale) FIVEWORDINLINE(0x2F3C, 0x4, 0x93, 0x7000, 0xA82A); extern pascal ComponentResult SGChannelPutPicture(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x94, 0x7000, 0xA82A); extern pascal ComponentResult SGChannelSetRequestedDataRate(SGChannel c, long bytesPerSecond) FIVEWORDINLINE(0x2F3C, 0x4, 0x95, 0x7000, 0xA82A); extern pascal ComponentResult SGChannelGetRequestedDataRate(SGChannel c, long *bytesPerSecond) FIVEWORDINLINE(0x2F3C, 0x4, 0x96, 0x7000, 0xA82A); extern pascal ComponentResult SGChannelSetDataSourceName(SGChannel c, const Str255 name, ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x6, 0x97, 0x7000, 0xA82A); extern pascal ComponentResult SGChannelGetDataSourceName(SGChannel c, Str255 name, ScriptCode *scriptTag) FIVEWORDINLINE(0x2F3C, 0x8, 0x98, 0x7000, 0xA82A); extern pascal ComponentResult SGInitChannel(SGChannel c, SeqGrabComponent owner) FIVEWORDINLINE(0x2F3C, 0x4, 0x180, 0x7000, 0xA82A); extern pascal ComponentResult SGWriteSamples(SGChannel c, Movie m, AliasHandle theFile) FIVEWORDINLINE(0x2F3C, 0x8, 0x181, 0x7000, 0xA82A); extern pascal ComponentResult SGGetDataRate(SGChannel c, long *bytesPerSecond) FIVEWORDINLINE(0x2F3C, 0x4, 0x182, 0x7000, 0xA82A); extern pascal ComponentResult SGAlignChannelRect(SGChannel c, Rect *r) FIVEWORDINLINE(0x2F3C, 0x4, 0x183, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelGetDitl(SeqGrabComponent s, Handle *ditl) FIVEWORDINLINE(0x2F3C, 0x4, 0x200, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelGetTitle(SeqGrabComponent s, Str255 title) FIVEWORDINLINE(0x2F3C, 0x4, 0x201, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelCanRun(SeqGrabComponent s, SGChannel c) FIVEWORDINLINE(0x2F3C, 0x4, 0x202, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelInstall(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset) FIVEWORDINLINE(0x2F3C, 0xA, 0x203, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelEvent(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset, EventRecord *theEvent, short *itemHit, Boolean *handled) FIVEWORDINLINE(0x2F3C, 0x16, 0x204, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelItem(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset, short itemNum) FIVEWORDINLINE(0x2F3C, 0xC, 0x205, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelRemove(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset) FIVEWORDINLINE(0x2F3C, 0xA, 0x206, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelSetGrabber(SeqGrabComponent s, SeqGrabComponent sg) FIVEWORDINLINE(0x2F3C, 0x4, 0x207, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelSetResFile(SeqGrabComponent s, short resRef) FIVEWORDINLINE(0x2F3C, 0x2, 0x208, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelGetSettings(SeqGrabComponent s, SGChannel c, UserData *ud, long flags) FIVEWORDINLINE(0x2F3C, 0xC, 0x209, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelSetSettings(SeqGrabComponent s, SGChannel c, UserData ud, long flags) FIVEWORDINLINE(0x2F3C, 0xC, 0x20A, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelValidateInput(SeqGrabComponent s, Boolean *ok) FIVEWORDINLINE(0x2F3C, 0x4, 0x20B, 0x7000, 0xA82A); extern pascal ComponentResult SGPanelSetEventFilter(SeqGrabComponent s, SGModalFilterUPP proc, long refCon) FIVEWORDINLINE(0x2F3C, 0x8, 0x20C, 0x7000, 0xA82A); #ifdef __cplusplus } #endif #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SGCompressInfo { Ptr buffer; unsigned long bufferSize; unsigned char similarity; unsigned char reserved; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SGCompressInfo SGCompressInfo; typedef pascal ComponentResult (*SGGrabProcPtr)(SGChannel c, short bufferNum, long refCon); enum { uppSGGrabProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGGrabUPP; #define CallSGGrabProc(userRoutine, c, bufferNum, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGGrabProcInfo, (c), (bufferNum), (refCon)) #define NewSGGrabProc(userRoutine) \ (SGGrabUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGGrabProcInfo, GetCurrentISA()) #else typedef SGGrabProcPtr SGGrabUPP; #define CallSGGrabProc(userRoutine, c, bufferNum, refCon) \ (*(userRoutine))((c), (bufferNum), (refCon)) #define NewSGGrabProc(userRoutine) \ (SGGrabUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGGrabCompleteProcPtr)(SGChannel c, short bufferNum, Boolean *done, long refCon); enum { uppSGGrabCompleteProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGGrabCompleteUPP; #define CallSGGrabCompleteProc(userRoutine, c, bufferNum, done, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGGrabCompleteProcInfo, (c), (bufferNum), (done), (refCon)) #define NewSGGrabCompleteProc(userRoutine) \ (SGGrabCompleteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGGrabCompleteProcInfo, GetCurrentISA()) #else typedef SGGrabCompleteProcPtr SGGrabCompleteUPP; #define CallSGGrabCompleteProc(userRoutine, c, bufferNum, done, refCon) \ (*(userRoutine))((c), (bufferNum), (done), (refCon)) #define NewSGGrabCompleteProc(userRoutine) \ (SGGrabCompleteUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGDisplayProcPtr)(SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn, long refCon); enum { uppSGDisplayProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(MatrixRecord*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(RgnHandle))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGDisplayUPP; #define CallSGDisplayProc(userRoutine, c, bufferNum, mp, clipRgn, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGDisplayProcInfo, (c), (bufferNum), (mp), (clipRgn), (refCon)) #define NewSGDisplayProc(userRoutine) \ (SGDisplayUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGDisplayProcInfo, GetCurrentISA()) #else typedef SGDisplayProcPtr SGDisplayUPP; #define CallSGDisplayProc(userRoutine, c, bufferNum, mp, clipRgn, refCon) \ (*(userRoutine))((c), (bufferNum), (mp), (clipRgn), (refCon)) #define NewSGDisplayProc(userRoutine) \ (SGDisplayUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGCompressProcPtr)(SGChannel c, short bufferNum, long refCon); enum { uppSGCompressProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGCompressUPP; #define CallSGCompressProc(userRoutine, c, bufferNum, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGCompressProcInfo, (c), (bufferNum), (refCon)) #define NewSGCompressProc(userRoutine) \ (SGCompressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGCompressProcInfo, GetCurrentISA()) #else typedef SGCompressProcPtr SGCompressUPP; #define CallSGCompressProc(userRoutine, c, bufferNum, refCon) \ (*(userRoutine))((c), (bufferNum), (refCon)) #define NewSGCompressProc(userRoutine) \ (SGCompressUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGCompressCompleteProcPtr)(SGChannel c, short bufferNum, Boolean *done, SGCompressInfo *ci, long refCon); enum { uppSGCompressCompleteProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(SGCompressInfo*))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGCompressCompleteUPP; #define CallSGCompressCompleteProc(userRoutine, c, bufferNum, done, ci, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGCompressCompleteProcInfo, (c), (bufferNum), (done), (ci), (refCon)) #define NewSGCompressCompleteProc(userRoutine) \ (SGCompressCompleteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGCompressCompleteProcInfo, GetCurrentISA()) #else typedef SGCompressCompleteProcPtr SGCompressCompleteUPP; #define CallSGCompressCompleteProc(userRoutine, c, bufferNum, done, ci, refCon) \ (*(userRoutine))((c), (bufferNum), (done), (ci), (refCon)) #define NewSGCompressCompleteProc(userRoutine) \ (SGCompressCompleteUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGAddFrameProcPtr)(SGChannel c, short bufferNum, TimeValue atTime, TimeScale scale, const SGCompressInfo *ci, long refCon); enum { uppSGAddFrameProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(TimeValue))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(TimeScale))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(SGCompressInfo*))) | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGAddFrameUPP; #define CallSGAddFrameProc(userRoutine, c, bufferNum, atTime, scale, ci, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGAddFrameProcInfo, (c), (bufferNum), (atTime), (scale), (ci), (refCon)) #define NewSGAddFrameProc(userRoutine) \ (SGAddFrameUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGAddFrameProcInfo, GetCurrentISA()) #else typedef SGAddFrameProcPtr SGAddFrameUPP; #define CallSGAddFrameProc(userRoutine, c, bufferNum, atTime, scale, ci, refCon) \ (*(userRoutine))((c), (bufferNum), (atTime), (scale), (ci), (refCon)) #define NewSGAddFrameProc(userRoutine) \ (SGAddFrameUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGTransferFrameProcPtr)(SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn, long refCon); enum { uppSGTransferFrameProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(MatrixRecord*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(RgnHandle))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGTransferFrameUPP; #define CallSGTransferFrameProc(userRoutine, c, bufferNum, mp, clipRgn, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGTransferFrameProcInfo, (c), (bufferNum), (mp), (clipRgn), (refCon)) #define NewSGTransferFrameProc(userRoutine) \ (SGTransferFrameUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGTransferFrameProcInfo, GetCurrentISA()) #else typedef SGTransferFrameProcPtr SGTransferFrameUPP; #define CallSGTransferFrameProc(userRoutine, c, bufferNum, mp, clipRgn, refCon) \ (*(userRoutine))((c), (bufferNum), (mp), (clipRgn), (refCon)) #define NewSGTransferFrameProc(userRoutine) \ (SGTransferFrameUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGGrabCompressCompleteProcPtr)(SGChannel c, Boolean *done, SGCompressInfo *ci, TimeRecord *t, long refCon); enum { uppSGGrabCompressCompleteProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean*))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(SGCompressInfo*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(TimeRecord*))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGGrabCompressCompleteUPP; #define CallSGGrabCompressCompleteProc(userRoutine, c, done, ci, t, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGGrabCompressCompleteProcInfo, (c), (done), (ci), (t), (refCon)) #define NewSGGrabCompressCompleteProc(userRoutine) \ (SGGrabCompressCompleteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGGrabCompressCompleteProcInfo, GetCurrentISA()) #else typedef SGGrabCompressCompleteProcPtr SGGrabCompressCompleteUPP; #define CallSGGrabCompressCompleteProc(userRoutine, c, done, ci, t, refCon) \ (*(userRoutine))((c), (done), (ci), (t), (refCon)) #define NewSGGrabCompressCompleteProc(userRoutine) \ (SGGrabCompressCompleteUPP)(userRoutine) #endif typedef pascal ComponentResult (*SGDisplayCompressProcPtr)(SGChannel c, Ptr dataPtr, ImageDescriptionHandle desc, MatrixRecord *mp, RgnHandle clipRgn, long refCon); enum { uppSGDisplayCompressProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(SGChannel))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ImageDescriptionHandle))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(MatrixRecord*))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle))) | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SGDisplayCompressUPP; #define CallSGDisplayCompressProc(userRoutine, c, dataPtr, desc, mp, clipRgn, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSGDisplayCompressProcInfo, (c), (dataPtr), (desc), (mp), (clipRgn), (refCon)) #define NewSGDisplayCompressProc(userRoutine) \ (SGDisplayCompressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSGDisplayCompressProcInfo, GetCurrentISA()) #else typedef SGDisplayCompressProcPtr SGDisplayCompressUPP; #define CallSGDisplayCompressProc(userRoutine, c, dataPtr, desc, mp, clipRgn, refCon) \ (*(userRoutine))((c), (dataPtr), (desc), (mp), (clipRgn), (refCon)) #define NewSGDisplayCompressProc(userRoutine) \ (SGDisplayCompressUPP)(userRoutine) #endif #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct VideoBottles { short procCount; SGGrabUPP grabProc; SGGrabCompleteUPP grabCompleteProc; SGDisplayUPP displayProc; SGCompressUPP compressProc; SGCompressCompleteUPP compressCompleteProc; SGAddFrameUPP addFrameProc; SGTransferFrameUPP transferFrameProc; SGGrabCompressCompleteUPP grabCompressCompleteProc; SGDisplayCompressUPP displayCompressProc; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct VideoBottles VideoBottles; #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult SGGetSrcVideoBounds(SGChannel c, Rect *r) FIVEWORDINLINE(0x2F3C, 0x4, 0x100, 0x7000, 0xA82A); extern pascal ComponentResult SGSetVideoRect(SGChannel c, Rect *r) FIVEWORDINLINE(0x2F3C, 0x4, 0x101, 0x7000, 0xA82A); extern pascal ComponentResult SGGetVideoRect(SGChannel c, Rect *r) FIVEWORDINLINE(0x2F3C, 0x4, 0x102, 0x7000, 0xA82A); extern pascal ComponentResult SGGetVideoCompressorType(SGChannel c, OSType *compressorType) FIVEWORDINLINE(0x2F3C, 0x4, 0x103, 0x7000, 0xA82A); extern pascal ComponentResult SGSetVideoCompressorType(SGChannel c, OSType compressorType) FIVEWORDINLINE(0x2F3C, 0x4, 0x104, 0x7000, 0xA82A); extern pascal ComponentResult SGSetVideoCompressor(SGChannel c, short depth, CompressorComponent compressor, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate) FIVEWORDINLINE(0x2F3C, 0x12, 0x105, 0x7000, 0xA82A); extern pascal ComponentResult SGGetVideoCompressor(SGChannel c, short *depth, CompressorComponent *compressor, CodecQ *spatialQuality, CodecQ *temporalQuality, long *keyFrameRate) FIVEWORDINLINE(0x2F3C, 0x14, 0x106, 0x7000, 0xA82A); extern pascal ComponentInstance SGGetVideoDigitizerComponent(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x107, 0x7000, 0xA82A); extern pascal ComponentResult SGSetVideoDigitizerComponent(SGChannel c, ComponentInstance vdig) FIVEWORDINLINE(0x2F3C, 0x4, 0x108, 0x7000, 0xA82A); extern pascal ComponentResult SGVideoDigitizerChanged(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x109, 0x7000, 0xA82A); extern pascal ComponentResult SGSetVideoBottlenecks(SGChannel c, VideoBottles *vb) FIVEWORDINLINE(0x2F3C, 0x4, 0x10A, 0x7000, 0xA82A); extern pascal ComponentResult SGGetVideoBottlenecks(SGChannel c, VideoBottles *vb) FIVEWORDINLINE(0x2F3C, 0x4, 0x10B, 0x7000, 0xA82A); extern pascal ComponentResult SGGrabFrame(SGChannel c, short bufferNum) FIVEWORDINLINE(0x2F3C, 0x2, 0x10C, 0x7000, 0xA82A); extern pascal ComponentResult SGGrabFrameComplete(SGChannel c, short bufferNum, Boolean *done) FIVEWORDINLINE(0x2F3C, 0x6, 0x10D, 0x7000, 0xA82A); extern pascal ComponentResult SGDisplayFrame(SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn) FIVEWORDINLINE(0x2F3C, 0xA, 0x10E, 0x7000, 0xA82A); extern pascal ComponentResult SGCompressFrame(SGChannel c, short bufferNum) FIVEWORDINLINE(0x2F3C, 0x2, 0x10F, 0x7000, 0xA82A); extern pascal ComponentResult SGCompressFrameComplete(SGChannel c, short bufferNum, Boolean *done, SGCompressInfo *ci) FIVEWORDINLINE(0x2F3C, 0xA, 0x110, 0x7000, 0xA82A); extern pascal ComponentResult SGAddFrame(SGChannel c, short bufferNum, TimeValue atTime, TimeScale scale, const SGCompressInfo *ci) FIVEWORDINLINE(0x2F3C, 0xE, 0x111, 0x7000, 0xA82A); extern pascal ComponentResult SGTransferFrameForCompress(SGChannel c, short bufferNum, MatrixRecord *mp, RgnHandle clipRgn) FIVEWORDINLINE(0x2F3C, 0xA, 0x112, 0x7000, 0xA82A); extern pascal ComponentResult SGSetCompressBuffer(SGChannel c, short depth, const Rect *compressSize) FIVEWORDINLINE(0x2F3C, 0x6, 0x113, 0x7000, 0xA82A); extern pascal ComponentResult SGGetCompressBuffer(SGChannel c, short *depth, Rect *compressSize) FIVEWORDINLINE(0x2F3C, 0x8, 0x114, 0x7000, 0xA82A); extern pascal ComponentResult SGGetBufferInfo(SGChannel c, short bufferNum, PixMapHandle *bufferPM, Rect *bufferRect, GWorldPtr *compressBuffer, Rect *compressBufferRect) FIVEWORDINLINE(0x2F3C, 0x12, 0x115, 0x7000, 0xA82A); extern pascal ComponentResult SGSetUseScreenBuffer(SGChannel c, Boolean useScreenBuffer) FIVEWORDINLINE(0x2F3C, 0x2, 0x116, 0x7000, 0xA82A); extern pascal ComponentResult SGGetUseScreenBuffer(SGChannel c, Boolean *useScreenBuffer) FIVEWORDINLINE(0x2F3C, 0x4, 0x117, 0x7000, 0xA82A); extern pascal ComponentResult SGGrabCompressComplete(SGChannel c, Boolean *done, SGCompressInfo *ci, TimeRecord *tr) FIVEWORDINLINE(0x2F3C, 0xC, 0x118, 0x7000, 0xA82A); extern pascal ComponentResult SGDisplayCompress(SGChannel c, Ptr dataPtr, ImageDescriptionHandle desc, MatrixRecord *mp, RgnHandle clipRgn) FIVEWORDINLINE(0x2F3C, 0x10, 0x119, 0x7000, 0xA82A); extern pascal ComponentResult SGSetFrameRate(SGChannel c, Fixed frameRate) FIVEWORDINLINE(0x2F3C, 0x4, 0x11A, 0x7000, 0xA82A); extern pascal ComponentResult SGGetFrameRate(SGChannel c, Fixed *frameRate) FIVEWORDINLINE(0x2F3C, 0x4, 0x11B, 0x7000, 0xA82A); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult SGSetSoundInputDriver(SGChannel c, const Str255 driverName) FIVEWORDINLINE(0x2F3C, 0x4, 0x100, 0x7000, 0xA82A); extern pascal long SGGetSoundInputDriver(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x101, 0x7000, 0xA82A); extern pascal ComponentResult SGSoundInputDriverChanged(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x102, 0x7000, 0xA82A); extern pascal ComponentResult SGSetSoundRecordChunkSize(SGChannel c, long seconds) FIVEWORDINLINE(0x2F3C, 0x4, 0x103, 0x7000, 0xA82A); extern pascal long SGGetSoundRecordChunkSize(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x104, 0x7000, 0xA82A); extern pascal ComponentResult SGSetSoundInputRate(SGChannel c, Fixed rate) FIVEWORDINLINE(0x2F3C, 0x4, 0x105, 0x7000, 0xA82A); extern pascal Fixed SGGetSoundInputRate(SGChannel c) FIVEWORDINLINE(0x2F3C, 0, 0x106, 0x7000, 0xA82A); extern pascal ComponentResult SGSetSoundInputParameters(SGChannel c, short sampleSize, short numChannels, OSType compressionType) FIVEWORDINLINE(0x2F3C, 0x8, 0x107, 0x7000, 0xA82A); extern pascal ComponentResult SGGetSoundInputParameters(SGChannel c, short *sampleSize, short *numChannels, OSType *compressionType) FIVEWORDINLINE(0x2F3C, 0xC, 0x108, 0x7000, 0xA82A); #ifdef __cplusplus } #endif #define sgChannelAtom 'chan' #define sgChannelSettingsAtom 'ctom' #define sgChannelDescription 'cdsc' #define sgChannelSettings 'cset' #define sgDeviceNameType 'name' #define sgUsageType 'use ' #define sgPlayFlagsType 'plyf' #define sgClipType 'clip' #define sgMatrixType 'mtrx' #define sgVolumeType 'volu' #define sgPanelSettingsAtom 'ptom' #define sgPanelDescription 'pdsc' #define sgPanelSettings 'pset' #define sgcSoundCompressionType 'scmp' #define sgcSoundSampleRateType 'srat' #define sgcSoundChannelCountType 'schn' #define sgcSoundSampleSizeType 'ssiz' #define sgcSoundInputType 'sinp' #define sgcSoundGainType 'gain' #define sgcVideoHueType 'hue ' #define sgcVideoSaturationType 'satr' #define sgcVideoContrastType 'trst' #define sgcVideoSharpnessType 'shrp' #define sgcVideoBrigtnessType 'brit' #define sgcVideoBlackLevelType 'blkl' #define sgcVideoWhiteLevelType 'whtl' #define sgcVideoInputType 'vinp' #define sgcVideoFormatType 'vstd' #define sgcVideoFilterType 'vflt' #define sgcVideoRectType 'vrct' #define sgVideoDigitizerType 'vdig' enum { kSGInitializeSelect = 0x1, kSGSetDataOutputSelect = 0x2, kSGGetDataOutputSelect = 0x3, kSGSetGWorldSelect = 0x4, kSGGetGWorldSelect = 0x5, kSGNewChannelSelect = 0x6, kSGDisposeChannelSelect = 0x7, kSGStartPreviewSelect = 0x10, kSGStartRecordSelect = 0x11, kSGIdleSelect = 0x12, kSGStopSelect = 0x13, kSGPauseSelect = 0x14, kSGPrepareSelect = 0x15, kSGReleaseSelect = 0x16, kSGGetMovieSelect = 0x17, kSGSetMaximumRecordTimeSelect = 0x18, kSGGetMaximumRecordTimeSelect = 0x19, kSGGetStorageSpaceRemainingSelect = 0x1A, kSGGetTimeRemainingSelect = 0x1B, kSGGrabPictSelect = 0x1C, kSGGetLastMovieResIDSelect = 0x1D, kSGSetFlagsSelect = 0x1E, kSGGetFlagsSelect = 0x1F, kSGSetDataProcSelect = 0x20, kSGNewChannelFromComponentSelect = 0x21, kSGDisposeDeviceListSelect = 0x22, kSGAppendDeviceListToMenuSelect = 0x23, kSGSetSettingsSelect = 0x24, kSGGetSettingsSelect = 0x25, kSGGetIndChannelSelect = 0x26, kSGUpdateSelect = 0x27, kSGGetPauseSelect = 0x28, kSGSettingsDialogSelect = 0x29, kSGGetAlignmentProcSelect = 0x2A, kSGSetChannelSettingsSelect = 0x2B, kSGGetChannelSettingsSelect = 0x2C, kSGGetModeSelect = 0x2D, kSGSetDataRefSelect = 0x2E, kSGGetDataRefSelect = 0x2F, kSGNewOutputSelect = 0x30, kSGDisposeOutputSelect = 0x31, kSGSetOutputFlagsSelect = 0x32, kSGSetChannelOutputSelect = 0x33, kSGGetDataOutputStorageSpaceRemainingSelect = 0x34, kSGWriteMovieDataSelect = 0x100, kSGAddFrameReferenceSelect = 0x101, kSGGetNextFrameReferenceSelect = 0x102, kSGGetTimeBaseSelect = 0x103, kSGSortDeviceListSelect = 0x104, kSGAddMovieDataSelect = 0x105, kSGChangedSourceSelect = 0x106, kSGCSetChannelUsageSelect = 0x80, kSGCGetChannelUsageSelect = 0x81, kSGCSetChannelBoundsSelect = 0x82, kSGCGetChannelBoundsSelect = 0x83, kSGCSetChannelVolumeSelect = 0x84, kSGCGetChannelVolumeSelect = 0x85, kSGCGetChannelInfoSelect = 0x86, kSGCSetChannelPlayFlagsSelect = 0x87, kSGCGetChannelPlayFlagsSelect = 0x88, kSGCSetChannelMaxFramesSelect = 0x89, kSGCGetChannelMaxFramesSelect = 0x8A, kSGCSetChannelRefConSelect = 0x8B, kSGCSetChannelClipSelect = 0x8C, kSGCGetChannelClipSelect = 0x8D, kSGCGetChannelSampleDescriptionSelect = 0x8E, kSGCGetChannelDeviceListSelect = 0x8F, kSGCSetChannelDeviceSelect = 0x90, kSGCSetChannelMatrixSelect = 0x91, kSGCGetChannelMatrixSelect = 0x92, kSGCGetChannelTimeScaleSelect = 0x93, kSGCChannelPutPictureSelect = 0x94, kSGCChannelSetRequestedDataRateSelect = 0x95, kSGCChannelGetRequestedDataRateSelect = 0x96, kSGCChannelSetDataSourceNameSelect = 0x97, kSGCChannelGetDataSourceNameSelect = 0x98, kSGCInitChannelSelect = 0x180, kSGCWriteSamplesSelect = 0x181, kSGCGetDataRateSelect = 0x182, kSGCAlignChannelRectSelect = 0x183, kSGCPanelGetDitlSelect = 0x200, kSGCPanelGetTitleSelect = 0x201, kSGCPanelCanRunSelect = 0x202, kSGCPanelInstallSelect = 0x203, kSGCPanelEventSelect = 0x204, kSGCPanelItemSelect = 0x205, kSGCPanelRemoveSelect = 0x206, kSGCPanelSetGrabberSelect = 0x207, kSGCPanelSetResFileSelect = 0x208, kSGCPanelGetSettingsSelect = 0x209, kSGCPanelSetSettingsSelect = 0x20A, kSGCPanelValidateInputSelect = 0x20B, kSGCPanelSetEventFilterSelect = 0x20C, kSGCGetSrcVideoBoundsSelect = 0x100, kSGCSetVideoRectSelect = 0x101, kSGCGetVideoRectSelect = 0x102, kSGCGetVideoCompressorTypeSelect = 0x103, kSGCSetVideoCompressorTypeSelect = 0x104, kSGCSetVideoCompressorSelect = 0x105, kSGCGetVideoCompressorSelect = 0x106, kSGCGetVideoDigitizerComponentSelect = 0x107, kSGCSetVideoDigitizerComponentSelect = 0x108, kSGCVideoDigitizerChangedSelect = 0x109, kSGCSetVideoBottlenecksSelect = 0x10A, kSGCGetVideoBottlenecksSelect = 0x10B, kSGCGrabFrameSelect = 0x10C, kSGCGrabFrameCompleteSelect = 0x10D, kSGCDisplayFrameSelect = 0x10E, kSGCCompressFrameSelect = 0x10F, kSGCCompressFrameCompleteSelect = 0x110, kSGCAddFrameSelect = 0x111, kSGCTransferFrameForCompressSelect = 0x112, kSGCSetCompressBufferSelect = 0x113, kSGCGetCompressBufferSelect = 0x114, kSGCGetBufferInfoSelect = 0x115, kSGCSetUseScreenBufferSelect = 0x116, kSGCGetUseScreenBufferSelect = 0x117, kSGCGrabCompressCompleteSelect = 0x118, kSGCDisplayCompressSelect = 0x119, kSGCSetFrameRateSelect = 0x11A, kSGCGetFrameRateSelect = 0x11B, kSGCSetSoundInputDriverSelect = 0x100, kSGCGetSoundInputDriverSelect = 0x101, kSGCSoundInputDriverChangedSelect = 0x102, kSGCSetSoundRecordChunkSizeSelect = 0x103, kSGCGetSoundRecordChunkSizeSelect = 0x104, kSGCSetSoundInputRateSelect = 0x105, kSGCGetSoundInputRateSelect = 0x106, kSGCSetSoundInputParametersSelect = 0x107, kSGCGetSoundInputParametersSelect = 0x108 }; #define videoDigitizerComponentType 'vdig' #define vdigInterfaceRev 2L #define ntscIn 0 #define currentIn 0 #define palIn 1 #define secamIn 2 #define ntscReallyIn 3 #define compositeIn 0 #define sVideoIn 1 #define rgbComponentIn 2 #define rgbComponentSyncIn 3 #define yuvComponentIn 4 #define yuvComponentSyncIn 5 #define vdPlayThruOff 0 #define vdPlayThruOn 1 #define vdDigitizerBW 0 #define vdDigitizerRGB 1 #define vdBroadcastMode 0 #define vdVTRMode 1 #define vdUseAnyField 0 #define vdUseOddField 1 #define vdUseEvenField 2 #define vdTypeBasic 0 #define vdTypeAlpha 1 #define vdTypeMask 2 #define vdTypeKey 3 #define digiUnimpErr -2201 #define qtParamErr -2202 #define matrixErr -2203 #define notExactMatrix -2204 #define noMoreKeyColors -2205 #define notExactSize -2206 #define badDepth -2207 #define noDMA -2208 #define badCallOrder -2209 #define digiInDoesNTSC (1L<<0) #define digiInDoesPAL (1L<<1) #define digiInDoesSECAM (1L<<2) #define digiInDoesGenLock (1L<<7) #define digiInDoesComposite (1L<<8) #define digiInDoesSVideo (1L<<9) #define digiInDoesComponent (1L<<10) #define digiInVTR_Broadcast (1L<<11) #define digiInDoesColor (1L<<12) #define digiInDoesBW (1L<<13) #define digiInSignalLock (1L<<31) #define digiOutDoes1 (1L<<0) #define digiOutDoes2 (1L<<1) #define digiOutDoes4 (1L<<2) #define digiOutDoes8 (1L<<3) #define digiOutDoes16 (1L<<4) #define digiOutDoes32 (1L<<5) #define digiOutDoesDither (1L<<6) #define digiOutDoesStretch (1L<<7) #define digiOutDoesShrink (1L<<8) #define digiOutDoesMask (1L<<9) #define digiOutDoesDouble (1L<<11) #define digiOutDoesQuad (1L<<12) #define digiOutDoesQuarter (1L<<13) #define digiOutDoesSixteenth (1L<<14) #define digiOutDoesRotate (1L<<15) #define digiOutDoesHorizFlip (1L<<16) #define digiOutDoesVertFlip (1L<<17) #define digiOutDoesSkew (1L<<18) #define digiOutDoesBlend (1L<<19) #define digiOutDoesWarp (1L<<20) #define digiOutDoesHW_DMA (1L<<21) #define digiOutDoesHWPlayThru (1L<<22) #define digiOutDoesILUT (1L<<23) #define digiOutDoesKeyColor (1L<<24) #define digiOutDoesAsyncGrabs (1L<<25) #define digiOutDoesUnreadableScreenBits (1L<<26) #define digiOutDoesCompress (1L<<27) #define digiOutDoesCompressOnly (1L<<28) #define digiOutDoesPlayThruDuringCompress (1L<<29) typedef ComponentInstance VideoDigitizerComponent; typedef ComponentResult VideoDigitizerError; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct DigitizerInfo { short vdigType; long inputCapabilityFlags; long outputCapabilityFlags; long inputCurrentFlags; long outputCurrentFlags; short slot; GDHandle gdh; GDHandle maskgdh; short minDestHeight; short minDestWidth; short maxDestHeight; short maxDestWidth; short blendLevels; long reserved; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct DigitizerInfo DigitizerInfo; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct VdigType { long type; long reserved; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct VdigType VdigType; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct VdigTypeList { short count; VdigType list[1]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct VdigTypeList VdigTypeList; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct VdigBufferRec { PixMapHandle dest; Point location; long reserved; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct VdigBufferRec VdigBufferRec; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct VdigBufferRecList { short count; MatrixRecordPtr matrix; RgnHandle mask; VdigBufferRec list[1]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct VdigBufferRecList VdigBufferRecList; typedef VdigBufferRecList *VdigBufferRecListPtr, **VdigBufferRecListHandle; typedef pascal void (*VdigIntProcPtr)(long flags, long refcon); enum { uppVdigIntProcInfo = kPascalStackBased | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr VdigIntUPP; #define CallVdigIntProc(userRoutine, flags, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppVdigIntProcInfo, (flags), (refcon)) #define NewVdigIntProc(userRoutine) \ (VdigIntUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppVdigIntProcInfo, GetCurrentISA()) #else typedef VdigIntProcPtr VdigIntUPP; #define CallVdigIntProc(userRoutine, flags, refcon) \ (*(userRoutine))((flags), (refcon)) #define NewVdigIntProc(userRoutine) \ (VdigIntUPP)(userRoutine) #endif #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct VDCompressionList { CodecComponent codec; CodecType cType; Str63 typeName; Str63 name; long formatFlags; long compressFlags; long reserved; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct VDCompressionList VDCompressionList; typedef VDCompressionList *VDCompressionListPtr, **VDCompressionListHandle; enum { dmaDepth1 = 1, dmaDepth2 = 2, dmaDepth4 = 4, dmaDepth8 = 8, dmaDepth16 = 16, dmaDepth32 = 32, dmaDepth2Gray = 64, dmaDepth4Gray = 128, dmaDepth8Gray = 256 }; #define kVDIGControlledFrameRate (-1) enum { kvdigSelectors = 86 }; #ifdef __cplusplus extern "C" { #endif extern pascal VideoDigitizerError VDGetMaxSrcRect(VideoDigitizerComponent ci, short inputStd, Rect *maxSrcRect) FIVEWORDINLINE(0x2F3C, 0x6, 0x1, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetActiveSrcRect(VideoDigitizerComponent ci, short inputStd, Rect *activeSrcRect) FIVEWORDINLINE(0x2F3C, 0x6, 0x2, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetDigitizerRect(VideoDigitizerComponent ci, Rect *digitizerRect) FIVEWORDINLINE(0x2F3C, 0x4, 0x3, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetDigitizerRect(VideoDigitizerComponent ci, Rect *digitizerRect) FIVEWORDINLINE(0x2F3C, 0x4, 0x4, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetVBlankRect(VideoDigitizerComponent ci, short inputStd, Rect *vBlankRect) FIVEWORDINLINE(0x2F3C, 0x6, 0x5, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetMaskPixMap(VideoDigitizerComponent ci, PixMapHandle maskPixMap) FIVEWORDINLINE(0x2F3C, 0x4, 0x6, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetPlayThruDestination(VideoDigitizerComponent ci, PixMapHandle *dest, Rect *destRect, MatrixRecord *m, RgnHandle *mask) FIVEWORDINLINE(0x2F3C, 0x10, 0x8, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDUseThisCLUT(VideoDigitizerComponent ci, CTabHandle colorTableHandle) FIVEWORDINLINE(0x2F3C, 0x4, 0x9, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetInputGammaValue(VideoDigitizerComponent ci, Fixed channel1, Fixed channel2, Fixed channel3) FIVEWORDINLINE(0x2F3C, 0xC, 0xA, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetInputGammaValue(VideoDigitizerComponent ci, Fixed *channel1, Fixed *channel2, Fixed *channel3) FIVEWORDINLINE(0x2F3C, 0xC, 0xB, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetBrightness(VideoDigitizerComponent ci, unsigned short *brightness) FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetBrightness(VideoDigitizerComponent ci, unsigned short *brightness) FIVEWORDINLINE(0x2F3C, 0x4, 0xD, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetContrast(VideoDigitizerComponent ci, unsigned short *contrast) FIVEWORDINLINE(0x2F3C, 0x4, 0xE, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetHue(VideoDigitizerComponent ci, unsigned short *hue) FIVEWORDINLINE(0x2F3C, 0x4, 0xF, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetSharpness(VideoDigitizerComponent ci, unsigned short *sharpness) FIVEWORDINLINE(0x2F3C, 0x4, 0x10, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetSaturation(VideoDigitizerComponent ci, unsigned short *saturation) FIVEWORDINLINE(0x2F3C, 0x4, 0x11, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetContrast(VideoDigitizerComponent ci, unsigned short *contrast) FIVEWORDINLINE(0x2F3C, 0x4, 0x12, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetHue(VideoDigitizerComponent ci, unsigned short *hue) FIVEWORDINLINE(0x2F3C, 0x4, 0x13, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetSharpness(VideoDigitizerComponent ci, unsigned short *sharpness) FIVEWORDINLINE(0x2F3C, 0x4, 0x14, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetSaturation(VideoDigitizerComponent ci, unsigned short *saturation) FIVEWORDINLINE(0x2F3C, 0x4, 0x15, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGrabOneFrame(VideoDigitizerComponent ci) FIVEWORDINLINE(0x2F3C, 0, 0x16, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetMaxAuxBuffer(VideoDigitizerComponent ci, PixMapHandle *pm, Rect *r) FIVEWORDINLINE(0x2F3C, 0x8, 0x17, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetDigitizerInfo(VideoDigitizerComponent ci, DigitizerInfo *info) FIVEWORDINLINE(0x2F3C, 0x4, 0x19, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetCurrentFlags(VideoDigitizerComponent ci, long *inputCurrentFlag, long *outputCurrentFlag) FIVEWORDINLINE(0x2F3C, 0x8, 0x1A, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetKeyColor(VideoDigitizerComponent ci, long index) FIVEWORDINLINE(0x2F3C, 0x4, 0x1B, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetKeyColor(VideoDigitizerComponent ci, long *index) FIVEWORDINLINE(0x2F3C, 0x4, 0x1C, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDAddKeyColor(VideoDigitizerComponent ci, long *index) FIVEWORDINLINE(0x2F3C, 0x4, 0x1D, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetNextKeyColor(VideoDigitizerComponent ci, long index) FIVEWORDINLINE(0x2F3C, 0x4, 0x1E, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetKeyColorRange(VideoDigitizerComponent ci, RGBColor *minRGB, RGBColor *maxRGB) FIVEWORDINLINE(0x2F3C, 0x8, 0x1F, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetKeyColorRange(VideoDigitizerComponent ci, RGBColor *minRGB, RGBColor *maxRGB) FIVEWORDINLINE(0x2F3C, 0x8, 0x20, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetDigitizerUserInterrupt(VideoDigitizerComponent ci, long flags, VdigIntUPP userInterruptProc, long refcon) FIVEWORDINLINE(0x2F3C, 0xC, 0x21, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetInputColorSpaceMode(VideoDigitizerComponent ci, short colorSpaceMode) FIVEWORDINLINE(0x2F3C, 0x2, 0x22, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetInputColorSpaceMode(VideoDigitizerComponent ci, short *colorSpaceMode) FIVEWORDINLINE(0x2F3C, 0x4, 0x23, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetClipState(VideoDigitizerComponent ci, short clipEnable) FIVEWORDINLINE(0x2F3C, 0x2, 0x24, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetClipState(VideoDigitizerComponent ci, short *clipEnable) FIVEWORDINLINE(0x2F3C, 0x4, 0x25, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetClipRgn(VideoDigitizerComponent ci, RgnHandle clipRegion) FIVEWORDINLINE(0x2F3C, 0x4, 0x26, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDClearClipRgn(VideoDigitizerComponent ci, RgnHandle clipRegion) FIVEWORDINLINE(0x2F3C, 0x4, 0x27, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetCLUTInUse(VideoDigitizerComponent ci, CTabHandle *colorTableHandle) FIVEWORDINLINE(0x2F3C, 0x4, 0x28, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetPLLFilterType(VideoDigitizerComponent ci, short pllType) FIVEWORDINLINE(0x2F3C, 0x2, 0x29, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetPLLFilterType(VideoDigitizerComponent ci, short *pllType) FIVEWORDINLINE(0x2F3C, 0x4, 0x2A, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetMaskandValue(VideoDigitizerComponent ci, unsigned short blendLevel, long *mask, long *value) FIVEWORDINLINE(0x2F3C, 0xA, 0x2B, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetMasterBlendLevel(VideoDigitizerComponent ci, unsigned short *blendLevel) FIVEWORDINLINE(0x2F3C, 0x4, 0x2C, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetPlayThruDestination(VideoDigitizerComponent ci, PixMapHandle dest, Rect *destRect, MatrixRecord *m, RgnHandle mask) FIVEWORDINLINE(0x2F3C, 0x10, 0x2D, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetPlayThruOnOff(VideoDigitizerComponent ci, short state) FIVEWORDINLINE(0x2F3C, 0x2, 0x2E, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetFieldPreference(VideoDigitizerComponent ci, short fieldFlag) FIVEWORDINLINE(0x2F3C, 0x2, 0x2F, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetFieldPreference(VideoDigitizerComponent ci, short *fieldFlag) FIVEWORDINLINE(0x2F3C, 0x4, 0x30, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDPreflightDestination(VideoDigitizerComponent ci, Rect *digitizerRect, PixMap **dest, Rect *destRect, MatrixRecord *m) FIVEWORDINLINE(0x2F3C, 0x10, 0x32, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDPreflightGlobalRect(VideoDigitizerComponent ci, GrafPtr theWindow, Rect *globalRect) FIVEWORDINLINE(0x2F3C, 0x8, 0x33, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetPlayThruGlobalRect(VideoDigitizerComponent ci, GrafPtr theWindow, Rect *globalRect) FIVEWORDINLINE(0x2F3C, 0x8, 0x34, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetInputGammaRecord(VideoDigitizerComponent ci, VDGamRecPtr inputGammaPtr) FIVEWORDINLINE(0x2F3C, 0x4, 0x35, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetInputGammaRecord(VideoDigitizerComponent ci, VDGamRecPtr *inputGammaPtr) FIVEWORDINLINE(0x2F3C, 0x4, 0x36, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetBlackLevelValue(VideoDigitizerComponent ci, unsigned short *blackLevel) FIVEWORDINLINE(0x2F3C, 0x4, 0x37, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetBlackLevelValue(VideoDigitizerComponent ci, unsigned short *blackLevel) FIVEWORDINLINE(0x2F3C, 0x4, 0x38, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetWhiteLevelValue(VideoDigitizerComponent ci, unsigned short *whiteLevel) FIVEWORDINLINE(0x2F3C, 0x4, 0x39, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetWhiteLevelValue(VideoDigitizerComponent ci, unsigned short *whiteLevel) FIVEWORDINLINE(0x2F3C, 0x4, 0x3A, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetVideoDefaults(VideoDigitizerComponent ci, unsigned short *blackLevel, unsigned short *whiteLevel, unsigned short *brightness, unsigned short *hue, unsigned short *saturation, unsigned short *contrast, unsigned short *sharpness) FIVEWORDINLINE(0x2F3C, 0x1C, 0x3B, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetNumberOfInputs(VideoDigitizerComponent ci, short *inputs) FIVEWORDINLINE(0x2F3C, 0x4, 0x3C, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetInputFormat(VideoDigitizerComponent ci, short input, short *format) FIVEWORDINLINE(0x2F3C, 0x6, 0x3D, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetInput(VideoDigitizerComponent ci, short input) FIVEWORDINLINE(0x2F3C, 0x2, 0x3E, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetInput(VideoDigitizerComponent ci, short *input) FIVEWORDINLINE(0x2F3C, 0x4, 0x3F, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetInputStandard(VideoDigitizerComponent ci, short inputStandard) FIVEWORDINLINE(0x2F3C, 0x2, 0x40, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetupBuffers(VideoDigitizerComponent ci, VdigBufferRecListHandle bufferList) FIVEWORDINLINE(0x2F3C, 0x4, 0x41, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGrabOneFrameAsync(VideoDigitizerComponent ci, short buffer) FIVEWORDINLINE(0x2F3C, 0x2, 0x42, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDDone(VideoDigitizerComponent ci, short buffer) FIVEWORDINLINE(0x2F3C, 0x2, 0x43, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetCompression(VideoDigitizerComponent ci, OSType compressType, short depth, Rect *bounds, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate) FIVEWORDINLINE(0x2F3C, 0x16, 0x44, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDCompressOneFrameAsync(VideoDigitizerComponent ci) FIVEWORDINLINE(0x2F3C, 0, 0x45, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDCompressDone(VideoDigitizerComponent ci, Boolean *done, Ptr *theData, long *dataSize, unsigned char *similarity, TimeRecord *t) FIVEWORDINLINE(0x2F3C, 0x14, 0x46, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDReleaseCompressBuffer(VideoDigitizerComponent ci, Ptr bufferAddr) FIVEWORDINLINE(0x2F3C, 0x4, 0x47, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetImageDescription(VideoDigitizerComponent ci, ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x4, 0x48, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDResetCompressSequence(VideoDigitizerComponent ci) FIVEWORDINLINE(0x2F3C, 0, 0x49, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetCompressionOnOff(VideoDigitizerComponent ci, Boolean state) FIVEWORDINLINE(0x2F3C, 0x2, 0x4A, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetCompressionTypes(VideoDigitizerComponent ci, VDCompressionListHandle h) FIVEWORDINLINE(0x2F3C, 0x4, 0x4B, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetTimeBase(VideoDigitizerComponent ci, TimeBase t) FIVEWORDINLINE(0x2F3C, 0x4, 0x4C, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetFrameRate(VideoDigitizerComponent ci, Fixed framesPerSecond) FIVEWORDINLINE(0x2F3C, 0x4, 0x4D, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetDataRate(VideoDigitizerComponent ci, long *milliSecPerFrame, Fixed *framesPerSecond, long *bytesPerSecond) FIVEWORDINLINE(0x2F3C, 0xC, 0x4E, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetSoundInputDriver(VideoDigitizerComponent ci, Str255 soundDriverName) FIVEWORDINLINE(0x2F3C, 0x4, 0x4F, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetDMADepths(VideoDigitizerComponent ci, long *depthArray, long *preferredDepth) FIVEWORDINLINE(0x2F3C, 0x8, 0x50, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetPreferredTimeScale(VideoDigitizerComponent ci, TimeScale *preferred) FIVEWORDINLINE(0x2F3C, 0x4, 0x51, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDReleaseAsyncBuffers(VideoDigitizerComponent ci) FIVEWORDINLINE(0x2F3C, 0, 0x52, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDSetDataRate(VideoDigitizerComponent ci, long bytesPerSecond) FIVEWORDINLINE(0x2F3C, 0x4, 0x54, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDGetTimeCode(VideoDigitizerComponent ci, TimeRecord *atTime, void *timeCodeFormat, void *timeCodeTime) FIVEWORDINLINE(0x2F3C, 0xC, 0x55, 0x7000, 0xA82A); extern pascal VideoDigitizerError VDUseSafeBuffers(VideoDigitizerComponent ci, Boolean useSafeBuffers) FIVEWORDINLINE(0x2F3C, 0x2, 0x56, 0x7000, 0xA82A); #ifdef __cplusplus } #endif enum { kSelectVDGetMaxSrcRect = 0x1, kSelectVDGetActiveSrcRect = 0x2, kSelectVDSetDigitizerRect = 0x3, kSelectVDGetDigitizerRect = 0x4, kSelectVDGetVBlankRect = 0x5, kSelectVDGetMaskPixMap = 0x6, kSelectVDGetPlayThruDestination = 0x8, kSelectVDUseThisCLUT = 0x9, kSelectVDSetInputGammaValue = 0xA, kSelectVDGetInputGammaValue = 0xB, kSelectVDSetBrightness = 0xC, kSelectVDGetBrightness = 0xD, kSelectVDSetContrast = 0xE, kSelectVDSetHue = 0xF, kSelectVDSetSharpness = 0x10, kSelectVDSetSaturation = 0x11, kSelectVDGetContrast = 0x12, kSelectVDGetHue = 0x13, kSelectVDGetSharpness = 0x14, kSelectVDGetSaturation = 0x15, kSelectVDGrabOneFrame = 0x16, kSelectVDGetMaxAuxBuffer = 0x17, kSelectVDGetDigitizerInfo = 0x19, kSelectVDGetCurrentFlags = 0x1A, kSelectVDSetKeyColor = 0x1B, kSelectVDGetKeyColor = 0x1C, kSelectVDAddKeyColor = 0x1D, kSelectVDGetNextKeyColor = 0x1E, kSelectVDSetKeyColorRange = 0x1F, kSelectVDGetKeyColorRange = 0x20, kSelectVDSetDigitizerUserInterrupt = 0x21, kSelectVDSetInputColorSpaceMode = 0x22, kSelectVDGetInputColorSpaceMode = 0x23, kSelectVDSetClipState = 0x24, kSelectVDGetClipState = 0x25, kSelectVDSetClipRgn = 0x26, kSelectVDClearClipRgn = 0x27, kSelectVDGetCLUTInUse = 0x28, kSelectVDSetPLLFilterType = 0x29, kSelectVDGetPLLFilterType = 0x2A, kSelectVDGetMaskandValue = 0x2B, kSelectVDSetMasterBlendLevel = 0x2C, kSelectVDSetPlayThruDestination = 0x2D, kSelectVDSetPlayThruOnOff = 0x2E, kSelectVDSetFieldPreference = 0x2F, kSelectVDGetFieldPreference = 0x30, kSelectVDPreflightDestination = 0x32, kSelectVDPreflightGlobalRect = 0x33, kSelectVDSetPlayThruGlobalRect = 0x34, kSelectVDSetInputGammaRecord = 0x35, kSelectVDGetInputGammaRecord = 0x36, kSelectVDSetBlackLevelValue = 0x37, kSelectVDGetBlackLevelValue = 0x38, kSelectVDSetWhiteLevelValue = 0x39, kSelectVDGetWhiteLevelValue = 0x3A, kSelectVDGetVideoDefaults = 0x3B, kSelectVDGetNumberOfInputs = 0x3C, kSelectVDGetInputFormat = 0x3D, kSelectVDSetInput = 0x3E, kSelectVDGetInput = 0x3F, kSelectVDSetInputStandard = 0x40, kSelectVDSetupBuffers = 0x41, kSelectVDGrabOneFrameAsync = 0x42, kSelectVDDone = 0x43, kSelectVDSetCompression = 0x44, kSelectVDCompressOneFrameAsync = 0x45, kSelectVDCompressDone = 0x46, kSelectVDReleaseCompressBuffer = 0x47, kSelectVDGetImageDescription = 0x48, kSelectVDResetCompressSequence = 0x49, kSelectVDSetCompressionOnOff = 0x4A, kSelectVDGetCompressionTypes = 0x4B, kSelectVDSetTimeBase = 0x4C, kSelectVDSetFrameRate = 0x4D, kSelectVDGetDataRate = 0x4E, kSelectVDGetSoundInputDriver = 0x4F, kSelectVDGetDMADepths = 0x50, kSelectVDGetPreferredTimeScale = 0x51, kSelectVDReleaseAsyncBuffers = 0x52, kSelectVDSetDataRate = 0x54, kSelectVDGetTimeCode = 0x55, kSelectVDUseSafeBuffers = 0x56 }; #define StandardCompressionType 'scdi' #define StandardCompressionSubType 'imag' typedef pascal Boolean (*SCModalFilterProcPtr)(DialogPtr theDialog, EventRecord *theEvent, short *itemHit, long refcon); enum { uppSCModalFilterProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SCModalFilterUPP; #define CallSCModalFilterProc(userRoutine, theDialog, theEvent, itemHit, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSCModalFilterProcInfo, (theDialog), (theEvent), (itemHit), (refcon)) #define NewSCModalFilterProc(userRoutine) \ (SCModalFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSCModalFilterProcInfo, GetCurrentISA()) #else typedef SCModalFilterProcPtr SCModalFilterUPP; #define CallSCModalFilterProc(userRoutine, theDialog, theEvent, itemHit, refcon) \ (*(userRoutine))((theDialog), (theEvent), (itemHit), (refcon)) #define NewSCModalFilterProc(userRoutine) \ (SCModalFilterUPP)(userRoutine) #endif typedef pascal short (*SCModalHookProcPtr)(DialogPtr theDialog, short itemHit, void *params, long refcon); enum { uppSCModalHookProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr SCModalHookUPP; #define CallSCModalHookProc(userRoutine, theDialog, itemHit, params, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppSCModalHookProcInfo, (theDialog), (itemHit), (params), (refcon)) #define NewSCModalHookProc(userRoutine) \ (SCModalHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSCModalHookProcInfo, GetCurrentISA()) #else typedef SCModalHookProcPtr SCModalHookUPP; #define CallSCModalHookProc(userRoutine, theDialog, itemHit, params, refcon) \ (*(userRoutine))((theDialog), (itemHit), (params), (refcon)) #define NewSCModalHookProc(userRoutine) \ (SCModalHookUPP)(userRoutine) #endif #define scListEveryCodec (1L<<1) #define scAllowZeroFrameRate (1L<<2) #define scAllowZeroKeyFrameRate (1L<<3) #define scShowBestDepth (1L<<4) #define scUseMovableModal (1L<<5) #define scPreferCropping (1<<0) #define scPreferScaling (1<<1) #define scPreferScalingAndCropping (scPreferScaling + scPreferCropping) #define scTestImageWidth 80 #define scTestImageHeight 80 #define scOKItem 1 #define scCancelItem 2 #define scCustomItem 3 #define scUserCancelled 1 #define scPositionRect 2 #define scPositionDialog 3 #define scSetTestImagePictHandle 4 #define scSetTestImagePictFile 5 #define scSetTestImagePixMap 6 #define scGetBestDeviceRect 7 #define scRequestImageSettings 10 #define scCompressImage 11 #define scCompressPicture 12 #define scCompressPictureFile 13 #define scRequestSequenceSettings 14 #define scCompressSequenceBegin 15 #define scCompressSequenceFrame 16 #define scCompressSequenceEnd 17 #define scDefaultPictHandleSettings 18 #define scDefaultPictFileSettings 19 #define scDefaultPixMapSettings 20 #define scGetInfo 21 #define scSetInfo 22 #define scNewGWorld 23 #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SCSpatialSettings { CodecType codecType; CodecComponent codec; short depth; CodecQ spatialQuality; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SCSpatialSettings SCSpatialSettings; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SCTemporalSettings { CodecQ temporalQuality; Fixed frameRate; long keyFrameRate; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SCTemporalSettings SCTemporalSettings; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SCDataRateSettings { long dataRate; long frameDuration; CodecQ minSpatialQuality; CodecQ minTemporalQuality; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SCDataRateSettings SCDataRateSettings; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SCExtendedProcs { SCModalFilterUPP filterProc; SCModalHookUPP hookProc; long refcon; Str31 customName; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SCExtendedProcs SCExtendedProcs; #define scSpatialSettingsType 'sptl' #define scTemporalSettingsType 'tprl' #define scDataRateSettingsType 'drat' #define scColorTableType 'clut' #define scProgressProcType 'prog' #define scExtendedProcsType 'xprc' #define scPreferenceFlagsType 'pref' #define scSettingsStateType 'ssta' #define scSequenceIDType 'sequ' #define scWindowPositionType 'wndw' #define scCodecFlagsType 'cflg' #define scCodecSettingsType 'cdec' #define scForceKeyValueType 'ksim' #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult SCPositionRect(ComponentInstance ci, Rect *rp, Point *where) FIVEWORDINLINE(0x2F3C, 0x8, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult SCPositionDialog(ComponentInstance ci, short id, Point *where) FIVEWORDINLINE(0x2F3C, 0x6, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult SCSetTestImagePictHandle(ComponentInstance ci, PicHandle testPict, Rect *testRect, short testFlags) FIVEWORDINLINE(0x2F3C, 0xA, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult SCSetTestImagePictFile(ComponentInstance ci, short testFileRef, Rect *testRect, short testFlags) FIVEWORDINLINE(0x2F3C, 0x8, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult SCSetTestImagePixMap(ComponentInstance ci, PixMapHandle testPixMap, Rect *testRect, short testFlags) FIVEWORDINLINE(0x2F3C, 0xA, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult SCGetBestDeviceRect(ComponentInstance ci, Rect *r) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult SCRequestImageSettings(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0, 0xA, 0x7000, 0xA82A); extern pascal ComponentResult SCCompressImage(ComponentInstance ci, PixMapHandle src, Rect *srcRect, ImageDescriptionHandle *desc, Handle *data) FIVEWORDINLINE(0x2F3C, 0x10, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult SCCompressPicture(ComponentInstance ci, PicHandle srcPicture, PicHandle dstPicture) FIVEWORDINLINE(0x2F3C, 0x8, 0xC, 0x7000, 0xA82A); extern pascal ComponentResult SCCompressPictureFile(ComponentInstance ci, short srcRefNum, short dstRefNum) FIVEWORDINLINE(0x2F3C, 0x4, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult SCRequestSequenceSettings(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult SCCompressSequenceBegin(ComponentInstance ci, PixMapHandle src, Rect *srcRect, ImageDescriptionHandle *desc) FIVEWORDINLINE(0x2F3C, 0xC, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult SCCompressSequenceFrame(ComponentInstance ci, PixMapHandle src, Rect *srcRect, Handle *data, long *dataSize, short *notSyncFlag) FIVEWORDINLINE(0x2F3C, 0x14, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult SCCompressSequenceEnd(ComponentInstance ci) FIVEWORDINLINE(0x2F3C, 0, 0x11, 0x7000, 0xA82A); extern pascal ComponentResult SCDefaultPictHandleSettings(ComponentInstance ci, PicHandle srcPicture, short motion) FIVEWORDINLINE(0x2F3C, 0x6, 0x12, 0x7000, 0xA82A); extern pascal ComponentResult SCDefaultPictFileSettings(ComponentInstance ci, short srcRef, short motion) FIVEWORDINLINE(0x2F3C, 0x4, 0x13, 0x7000, 0xA82A); extern pascal ComponentResult SCDefaultPixMapSettings(ComponentInstance ci, PixMapHandle src, short motion) FIVEWORDINLINE(0x2F3C, 0x6, 0x14, 0x7000, 0xA82A); extern pascal ComponentResult SCGetInfo(ComponentInstance ci, OSType type, void *info) FIVEWORDINLINE(0x2F3C, 0x8, 0x15, 0x7000, 0xA82A); extern pascal ComponentResult SCSetInfo(ComponentInstance ci, OSType type, void *info) FIVEWORDINLINE(0x2F3C, 0x8, 0x16, 0x7000, 0xA82A); extern pascal ComponentResult SCNewGWorld(ComponentInstance ci, GWorldPtr *gwp, Rect *rp, GWorldFlags flags) FIVEWORDINLINE(0x2F3C, 0xC, 0x17, 0x7000, 0xA82A); extern pascal ComponentResult SCSetCompressFlags(ComponentInstance ci, long flags) FIVEWORDINLINE(0x2F3C, 0x4, 0x18, 0x7000, 0xA82A); extern pascal ComponentResult SCGetCompressFlags(ComponentInstance ci, long *flags) FIVEWORDINLINE(0x2F3C, 0x4, 0x19, 0x7000, 0xA82A); #ifdef __cplusplus } #endif #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SCParams { long flags; CodecType theCodecType; CodecComponent theCodec; CodecQ spatialQuality; CodecQ temporalQuality; short depth; Fixed frameRate; long keyFrameRate; long reserved1; long reserved2; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SCParams SCParams; #define scGetCompression 1 #define scShowMotionSettings (1L<<0) #define scSettingsChangedItem -1 #define scCompressFlagIgnoreIdenticalFrames 1 #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult SCGetCompressionExtended(ComponentInstance ci, SCParams *params, Point where, SCModalFilterUPP filterProc, SCModalHookUPP hookProc, long refcon, StringPtr customName) FIVEWORDINLINE(0x2F3C, 0x18, 0x1, 0x7000, 0xA82A); #define SCGetCompression(ci, params, where) SCGetCompressionExtended(ci,params,where,0,0,0,0) #ifdef __cplusplus } #endif typedef ComponentInstance MovieImportComponent, MovieExportComponent; #define MovieImportType 'eat ' #define MovieExportType 'spit' enum { canMovieImportHandles = 1 << 0, canMovieImportFiles = 1 << 1, hasMovieImportUserInterface = 1 << 2, canMovieExportHandles = 1 << 3, canMovieExportFiles = 1 << 4, hasMovieExportUserInterface = 1 << 5, dontAutoFileMovieImport = 1 << 6, canMovieExportAuxDataHandle = 1 << 7, canMovieImportValidateHandles = 1 << 8, canMovieImportValidateFile = 1 << 9, dontRegisterWithEasyOpen = 1 << 10, canMovieImportInPlace = 1 << 11, movieImportSubTypeIsFileExtension = 1 << 12 }; enum { kMovieImportExportOpenSelect = kComponentOpenSelect, kMovieImportExportCloseSelect = kComponentCloseSelect, kMovieImportExportCanDoSelect = kComponentCanDoSelect, kMovieImportExportVersionSelect = kComponentVersionSelect, kMovieImportHandleSelect = 1, kMovieImportFileSelect = 2, kMovieImportSetSampleDurationSelect = 3, kMovieImportSetSampleDescriptionSelect = 4, kMovieImportSetMediaFileSelect = 5, kMovieImportSetDimensionsSelect = 6, kMovieImportSetChunkSizeSelect = 7, kMovieImportSetProgressProcSelect = 8, kMovieImportSetAuxiliaryDataSelect = 9, kMovieImportSetFromScrapSelect = 10, kMovieImportDoUserDialogSelect = 11, kMovieImportSetDurationSelect = 12, kMovieImportGetAuxiliaryDataTypeSelect = 13, kMovieImportValidateSelect = 14, kMovieImportGetFileTypeSelect = 15, kMovieExportToHandleSelect = 128, kMovieExportToFileSelect = 129, kMovieExportDoUserDialogSelectOBSOLETE = 130, kMovieExportGetAuxiliaryDataSelect = 131, kMovieExportSetProgressProcSelect = 132, kMovieExportSetSampleDescriptionSelect = 133, kMovieExportDoUserDialogSelect = 134, kMovieExportGetCreatorTypeSelect = 135 }; enum { movieImportCreateTrack = 1, movieImportInParallel = 2, movieImportMustUseTrack = 4 }; enum { movieImportResultUsedMultipleTracks = 8 }; #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult MovieImportHandle(MovieImportComponent ci, Handle dataH, Movie theMovie, Track targetTrack, Track *usedTrack, TimeValue atTime, TimeValue *addedDuration, long inFlags, long *outFlags) FIVEWORDINLINE(0x2F3C, 0x20, 0x1, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportFile(MovieImportComponent ci, const FSSpec *theFile, Movie theMovie, Track targetTrack, Track *usedTrack, TimeValue atTime, TimeValue *addedDuration, long inFlags, long *outFlags) FIVEWORDINLINE(0x2F3C, 0x20, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetSampleDuration(MovieImportComponent ci, TimeValue duration, TimeScale scale) FIVEWORDINLINE(0x2F3C, 0x8, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetSampleDescription(MovieImportComponent ci, SampleDescriptionHandle desc, OSType mediaType) FIVEWORDINLINE(0x2F3C, 0x8, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetMediaFile(MovieImportComponent ci, AliasHandle alias) FIVEWORDINLINE(0x2F3C, 0x4, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetDimensions(MovieImportComponent ci, Fixed width, Fixed height) FIVEWORDINLINE(0x2F3C, 0x8, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetChunkSize(MovieImportComponent ci, long chunkSize) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetProgressProc(MovieImportComponent ci, MovieProgressUPP proc, long refcon) FIVEWORDINLINE(0x2F3C, 0x8, 0x8, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetAuxiliaryData(MovieImportComponent ci, Handle data, OSType handleType) FIVEWORDINLINE(0x2F3C, 0x8, 0x9, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetFromScrap(MovieImportComponent ci, Boolean fromScrap) FIVEWORDINLINE(0x2F3C, 0x2, 0xA, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportDoUserDialog(MovieImportComponent ci, const FSSpec *theFile, Handle theData, Boolean *canceled) FIVEWORDINLINE(0x2F3C, 0xC, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportSetDuration(MovieImportComponent ci, TimeValue duration) FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportGetAuxiliaryDataType(MovieImportComponent ci, OSType *auxType) FIVEWORDINLINE(0x2F3C, 0x4, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportValidate(MovieImportComponent ci, const FSSpec *theFile, Handle theData, Boolean *valid) FIVEWORDINLINE(0x2F3C, 0xC, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult MovieImportGetFileType(MovieImportComponent ci, OSType *fileType) FIVEWORDINLINE(0x2F3C, 0x4, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportToHandle(MovieExportComponent ci, Handle dataH, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration) FIVEWORDINLINE(0x2F3C, 0x14, 0x80, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportToFile(MovieExportComponent ci, const FSSpec *theFile, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration) FIVEWORDINLINE(0x2F3C, 0x14, 0x81, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportGetAuxiliaryData(MovieExportComponent ci, Handle dataH, OSType *handleType) FIVEWORDINLINE(0x2F3C, 0x8, 0x83, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportSetProgressProc(MovieExportComponent ci, MovieProgressUPP proc, long refcon) FIVEWORDINLINE(0x2F3C, 0x8, 0x84, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportSetSampleDescription(MovieExportComponent ci, SampleDescriptionHandle desc, OSType mediaType) FIVEWORDINLINE(0x2F3C, 0x8, 0x85, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportDoUserDialog(MovieExportComponent ci, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration, Boolean *canceled) FIVEWORDINLINE(0x2F3C, 0x14, 0x86, 0x7000, 0xA82A); extern pascal ComponentResult MovieExportGetCreatorType(MovieExportComponent ci, OSType *creator) FIVEWORDINLINE(0x2F3C, 0x4, 0x87, 0x7000, 0xA82A); #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TextDisplayData { long displayFlags; long textJustification; RGBColor bgColor; Rect textBox; short beginHilite; short endHilite; RGBColor hiliteColor; Boolean doHiliteColor; TimeValue scrollDelayDur; Point dropShadowOffset; short dropShadowTransparency; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TextDisplayData TextDisplayData; typedef ComponentInstance TextExportComponent; extern pascal ComponentResult TextExportGetDisplayData(TextExportComponent ci, TextDisplayData *textDisplay) FIVEWORDINLINE(0x2F3C, 0x4, 0x100, 0x7000, 0xA82A); #ifdef __cplusplus } #endif typedef ComponentInstance pnotComponent; enum { pnotComponentWantsEvents = 1, pnotComponentNeedsNoCache = 2 }; enum { kPreviewOpenSelector = 0, kPreviewCloseSelector = -1, kPreviewCanDoSelector = -2, kPreviewVersionSelector = -3, kPreviewShowDataSelector = 1, kPreviewMakePreviewSelector = 2, kPreviewMakePreviewReferenceSelector = 3, kPreviewEventSelector = 4 }; #define ShowFilePreviewComponentType 'pnot' #define CreateFilePreviewComponentType 'pmak' #ifdef __cplusplus extern "C" { #endif extern pascal ComponentResult PreviewShowData(pnotComponent p, OSType dataType, Handle data, const Rect *inHere) FIVEWORDINLINE(0x2F3C, 0xC, 0x1, 0x7000, 0xA82A); extern pascal ComponentResult PreviewMakePreview(pnotComponent p, OSType *previewType, Handle *previewResult, const FSSpec *sourceFile, ICMProgressProcRecordPtr progress) FIVEWORDINLINE(0x2F3C, 0x10, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult PreviewMakePreviewReference(pnotComponent p, OSType *previewType, short *resID, const FSSpec *sourceFile) FIVEWORDINLINE(0x2F3C, 0xC, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult PreviewEvent(pnotComponent p, EventRecord *e, Boolean *handledEvent) FIVEWORDINLINE(0x2F3C, 0x8, 0x4, 0x7000, 0xA82A); #ifdef __cplusplus } #endif typedef pascal void (*DataHCompletionProcPtr)(Ptr request, long refcon, OSErr err); enum { uppDataHCompletionProcInfo = kPascalStackBased | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(OSErr))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr DataHCompletionUPP; #define CallDataHCompletionProc(userRoutine, request, refcon, err) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppDataHCompletionProcInfo, (request), (refcon), (err)) #define NewDataHCompletionProc(userRoutine) \ (DataHCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDataHCompletionProcInfo, GetCurrentISA()) #else typedef DataHCompletionProcPtr DataHCompletionUPP; #define CallDataHCompletionProc(userRoutine, request, refcon, err) \ (*(userRoutine))((request), (refcon), (err)) #define NewDataHCompletionProc(userRoutine) \ (DataHCompletionUPP)(userRoutine) #endif enum { kDataHCanRead = 1L << 0, kDataHSpecialRead = 1L << 1, kDataHSpecialReadFile = 1L << 2, kDataHCanWrite = 1L << 3, kDataHSpecialWrite = 1 << 4, kDataHSpecialWriteFile = 1 << 5, kDataHCanStreamingWrite = 1 << 6, kDataHMustCheckDataRef = 1 << 7 }; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct DataHVolumeListRecord { short vRefNum; long flags; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct DataHVolumeListRecord DataHVolumeListRecord; typedef DataHVolumeListRecord *DataHVolumeListPtr; typedef DataHVolumeListPtr *DataHVolumeList; #define kDataHExtendedSchedule 'xtnd' #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct DataHScheduleRecord { TimeRecord timeNeededBy; long extendedID; long extendedVers; Fixed priority; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct DataHScheduleRecord DataHScheduleRecord; typedef DataHScheduleRecord *DataHSchedulePtr; extern pascal ComponentResult DataHGetData(DataHandler dh, Handle h, long hOffset, long offset, long size) FIVEWORDINLINE(0x2F3C, 0x10, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult DataHPutData(DataHandler dh, Handle h, long hOffset, long *offset, long size) FIVEWORDINLINE(0x2F3C, 0x10, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult DataHFlushData(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult DataHOpenForWrite(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult DataHCloseForWrite(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult DataHOpenForRead(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0x8, 0x7000, 0xA82A); extern pascal ComponentResult DataHCloseForRead(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0x9, 0x7000, 0xA82A); extern pascal ComponentResult DataHSetDataRef(DataHandler dh, Handle dataRef) FIVEWORDINLINE(0x2F3C, 0x4, 0xA, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetDataRef(DataHandler dh, Handle *dataRef) FIVEWORDINLINE(0x2F3C, 0x4, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult DataHCompareDataRef(DataHandler dh, Handle dataRef, Boolean *equal) FIVEWORDINLINE(0x2F3C, 0x8, 0xC, 0x7000, 0xA82A); extern pascal ComponentResult DataHTask(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult DataHScheduleData(DataHandler dh, Ptr PlaceToPutDataPtr, long FileOffset, long DataSize, long RefCon, DataHSchedulePtr scheduleRec, DataHCompletionUPP CompletionRtn) FIVEWORDINLINE(0x2F3C, 0x18, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult DataHFinishData(DataHandler dh, Ptr PlaceToPutDataPtr, Boolean Cancel) FIVEWORDINLINE(0x2F3C, 0x6, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult DataHFlushCache(DataHandler dh) FIVEWORDINLINE(0x2F3C, 0, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult DataHResolveDataRef(DataHandler dh, Handle theDataRef, Boolean *wasChanged, Boolean userInterfaceAllowed) FIVEWORDINLINE(0x2F3C, 0xA, 0x11, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetFileSize(DataHandler dh, long *fileSize) FIVEWORDINLINE(0x2F3C, 0x4, 0x12, 0x7000, 0xA82A); extern pascal ComponentResult DataHCanUseDataRef(DataHandler dh, Handle dataRef, long *useFlags) FIVEWORDINLINE(0x2F3C, 0x8, 0x13, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetVolumeList(DataHandler dh, DataHVolumeList *volumeList) FIVEWORDINLINE(0x2F3C, 0x4, 0x14, 0x7000, 0xA82A); extern pascal ComponentResult DataHWrite(DataHandler dh, Ptr data, long offset, long size, DataHCompletionUPP completion, long refCon) FIVEWORDINLINE(0x2F3C, 0x14, 0x15, 0x7000, 0xA82A); extern pascal ComponentResult DataHPreextend(DataHandler dh, long maxToAdd, long *spaceAdded) FIVEWORDINLINE(0x2F3C, 0x8, 0x16, 0x7000, 0xA82A); extern pascal ComponentResult DataHSetFileSize(DataHandler dh, long fileSize) FIVEWORDINLINE(0x2F3C, 0x4, 0x17, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetFreeSpace(DataHandler dh, unsigned long *freeSize) FIVEWORDINLINE(0x2F3C, 0x4, 0x18, 0x7000, 0xA82A); extern pascal ComponentResult DataHCreateFile(DataHandler dh, OSType creator, Boolean deleteExisting) FIVEWORDINLINE(0x2F3C, 0x6, 0x19, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetPreferredBlockSize(DataHandler dh, long *blockSize) FIVEWORDINLINE(0x2F3C, 0x4, 0x1A, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetDeviceIndex(DataHandler dh, long *deviceIndex) FIVEWORDINLINE(0x2F3C, 0x4, 0x1B, 0x7000, 0xA82A); extern pascal ComponentResult DataHIsStreamingDataHandler(DataHandler dh, Boolean *yes) FIVEWORDINLINE(0x2F3C, 0x4, 0x1C, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetDataInBuffer(DataHandler dh, long startOffset, long *size) FIVEWORDINLINE(0x2F3C, 0x8, 0x1D, 0x7000, 0xA82A); extern pascal ComponentResult DataHGetScheduleAheadTime(DataHandler dh, long *millisecs) FIVEWORDINLINE(0x2F3C, 0x4, 0x1E, 0x7000, 0xA82A); extern pascal ComponentResult DataHPlaybackHints(DataHandler dh, long flags, unsigned long minFileOffset, unsigned long maxFileOffset, long bytesPerSecond) FIVEWORDINLINE(0x2F3C, 0x10, 0x103, 0x7000, 0xA82A); enum { kDataHGetDataSelect = 0x2, kDataHPutDataSelect = 0x3, kDataHFlushDataSelect = 0x4, kDataHOpenForWriteSelect = 0x5, kDataHCloseForWriteSelect = 0x6, kDataHOpenForReadSelect = 0x8, kDataHCloseForReadSelect = 0x9, kDataHSetDataRefSelect = 0xA, kDataHGetDataRefSelect = 0xB, kDataHCompareDataRefSelect = 0xC, kDataHTaskSelect = 0xD, kDataHScheduleDataSelect = 0xE, kDataHFinishDataSelect = 0xF, kDataHFlushCacheSelect = 0x10, kDataHResolveDataRefSelect = 0x11, kDataHGetFileSizeSelect = 0x12, kDataHCanUseDataRefSelect = 0x13, kDataHGetVolumeListSelect = 0x14, kDataHWriteSelect = 0x15, kDataHPreextendSelect = 0x16, kDataHSetFileSizeSelect = 0x17, kDataHGetFreeSpaceSelect = 0x18, kDataHCreateFileSelect = 0x19, kDataHGetPreferredBlockSizeSelect = 0x1A, kDataHGetDeviceIndexSelect = 0x1B, kDataHIsStreamingDataHandlerSelect = 0x1C, kDataHGetDataInBufferSelect = 0x1D, kDataHGetScheduleAheadTimeSelect = 0x1E, kDataHPlaybackHintsSelect = 0x103 }; #define kMusicComponentType 'musi' typedef ComponentInstance MusicComponent; enum { kSynthesizerDynamicVoice = 1, kSynthesizerUsesMIDIPort = 2, kSynthesizerMicrotone = 4, kSynthesizerLimitedMicrotone = 8, kSynthesizerMixedDrums = 16, kSynthesizerSoftware = 32, kSynthesizerGMSuperset = 8192, kSynthesizerGM = 16384 }; enum MusicControllers { kControllerModulationWheel = 1, kControllerBreath = 2, kControllerFoot = 4, kControllerPortamentoTime = 5, kControllerVolume = 7, kControllerBalance = 8, kControllerPan = 10, kControllerExpression = 11, kControllerPitchBend = 32, kControllerAfterTouch = 33, kControllerSustain = 64, kControllerPortamento = 65, kControllerSostenuto = 66, kControllerSoftPedal = 67, kControllerReverb = 91, kControllerTremolo = 92, kControllerChorus = 93, kControllerCeleste = 94, kControllerPhaser = 95 }; #define kControllerMaximum 0x7FFF #define kControllerMinimum 0x8000 #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SynthesizerDescription { OSType type; Str31 name; unsigned long flags; unsigned long voiceCount; unsigned long partCount; unsigned long instrumentCount; unsigned long modifiableInstrumentCount; unsigned long channelMask; unsigned long drumPartCount; unsigned long drumCount; unsigned long modifiableDrumCount; unsigned long drumChannelMask; unsigned long outputCount; unsigned long latency; unsigned long controllers[4]; unsigned long gmInstruments[4]; unsigned long gmDrums[4]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SynthesizerDescription SynthesizerDescription; #define kVoiceCountDynamic -1 #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct ToneDescription { OSType synthesizerType; Str31 synthesizerName; Str31 instrumentName; long instrumentNumber; long gmNumber; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct ToneDescription ToneDescription; #define kFirstDrumkit 16384 #define kLastDrumkit (kFirstDrumkit+128) enum { kInstrumentMatchSynthesizerType = 1, kInstrumentMatchSynthesizerName = 2, kInstrumentMatchName = 4, kInstrumentMatchNumber = 8, kInstrumentMatchGMNumber = 16 }; enum { kKnobRealtime = 1, kKnobNextNote = 2, kKnobAction = 4, kKnobNotInstrument = 8, kKnobAffectsOthers = 16, kKnobMinorGroupStart = 64, kKnobGroupStart = 128, kKnobTypeNumber = 0 << 12, kKnobTypeBoolean = 1 << 12, kKnobTypeNote = 2 << 12, kKnobTypePan = 3 << 12, kKnobTypeInstrument = 4 << 12, kKnobTypeSetting = 5 << 12 }; #define kUnknownKnobValue 0x7FFFFFFF #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct KnobDescription { Str31 name; long lowValue; long highValue; long defaultValue; long flags; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct KnobDescription KnobDescription; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct InstrumentData { ToneDescription tone; long knobCount; long knob[1]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct InstrumentData InstrumentData; typedef InstrumentData **InstrumentDataHandle; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct FlatInstrument { ToneDescription tone; long size; unsigned char data[4]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct FlatInstrument FlatInstrument; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct InstrumentAboutInfo { PicHandle p; Str255 author; Str255 copyright; Str255 other; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct InstrumentAboutInfo InstrumentAboutInfo; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct MusicMIDIPacket { unsigned short length; unsigned long reserved; unsigned char data[249]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct MusicMIDIPacket MusicMIDIPacket; typedef pascal ComponentResult (*MusicMIDISendProcPtr)(MusicComponent self, long refCon, MusicMIDIPacket *mmp); enum { kMusicFirstSelect = 0, kMusicGetDescriptionSelect, kMusicGetPartSelect, kMusicSetPartSelect, kMusicSetInstrumentNumberSelect, kMusicGetInstrumentNumberSelect, kMusicStoreInstrumentSelect, kMusicGetInstrumentSelect, kMusicSetInstrumentSelect, kMusicDummyOne, kMusicDummyTwo, kMusicGetInstrumentKnobDescriptionSelect, kMusicGetDrumKnobDescriptionSelect, kMusicGetKnobDescriptionSelect, kMusicGetPartKnobSelect, kMusicSetPartKnobSelect, kMusicGetKnobSelect, kMusicSetKnobSelect, kMusicGetPartNameSelect, kMusicSetPartNameSelect, kMusicFindToneSelect, kMusicPlayNoteSelect, kMusicResetPartSelect, kMusicSetControllerSelect, kMusicGetControllerSelect, kMusicGetMIDIProcSelect, kMusicSetMIDIProcSelect, kMusicGetInstrumentNamesSelect, kMusicGetDrumNamesSelect, kMusicGetMasterTuneSelect, kMusicSetMasterTuneSelect, kMusicSetFlatInstrumentSelect, kMusicGetInstrumentAboutInfoSelect }; #define MusicError(x) (0x80000000 | ((unsigned short)(-2100 - x)) ) #define notImplementedMusicErr MusicError(1) #define cantSendToSynthesizerErr MusicError(2) #define cantReceiveFromSynthesizerErr MusicError(3) #define illegalVoiceAllocationErr MusicError(4) #define illegalPartErr MusicError(5) #define illegalChannelErr MusicError(6) #define illegalKnobErr MusicError(7) #define illegalKnobValueErr MusicError(8) #define illegalInstrumentErr MusicError(9) #define illegalControllerErr MusicError(10) #define midiManagerAbsentErr MusicError(11) #define synthesizerNotRespondingErr MusicError(12) #define synthesizerErr MusicError(13) #define illegalNoteChannelErr MusicError(14) #define noteChannelNotAllocatedErr MusicError(15) #define tunePlayerFullErr MusicError(16) #define tuneParseErr MusicError(17) #define kGMType 'gm ' extern pascal ComponentResult MusicGetPart(MusicComponent mc, long part, long *midiChannel, long *polyphony) FIVEWORDINLINE(0x2F3C, 0xC, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetPart(MusicComponent mc, long part, long midiChannel, long polyphony) FIVEWORDINLINE(0x2F3C, 0xC, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetDescription(MusicComponent mc, SynthesizerDescription *sd) FIVEWORDINLINE(0x2F3C, 0x4, 0x1, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetInstrumentAboutInfo(MusicComponent mc, long part, InstrumentAboutInfo *iai) FIVEWORDINLINE(0x2F3C, 0x8, 0x20, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetInstrumentNumber(MusicComponent mc, long part, long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x8, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetInstrumentNumber(MusicComponent mc, long part) FIVEWORDINLINE(0x2F3C, 0x4, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult MusicStoreInstrument(MusicComponent mc, long part, long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x8, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetInstrument(MusicComponent mc, long part, InstrumentDataHandle *iH) FIVEWORDINLINE(0x2F3C, 0x8, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetInstrument(MusicComponent mc, long part, InstrumentDataHandle iH) FIVEWORDINLINE(0x2F3C, 0x8, 0x8, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetFlatInstrument(MusicComponent mc, long part, FlatInstrument *flatInstrument) FIVEWORDINLINE(0x2F3C, 0x8, 0x1F, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetInstrumentKnobDescription(MusicComponent mc, long knobNumber, KnobDescription *mkd) FIVEWORDINLINE(0x2F3C, 0x8, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetDrumKnobDescription(MusicComponent mc, long knobNumber, KnobDescription *mkd) FIVEWORDINLINE(0x2F3C, 0x8, 0xC, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetPartKnob(MusicComponent mc, long part, long knobNumber) FIVEWORDINLINE(0x2F3C, 0x8, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetPartKnob(MusicComponent mc, long part, long knobNumber, long knobValue) FIVEWORDINLINE(0x2F3C, 0xC, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetKnobDescription(MusicComponent mc, long knobNumber, KnobDescription *mkd) FIVEWORDINLINE(0x2F3C, 0x8, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetKnob(MusicComponent mc, long knobNumber) FIVEWORDINLINE(0x2F3C, 0x4, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetKnob(MusicComponent mc, long knobNumber, long knobValue) FIVEWORDINLINE(0x2F3C, 0x8, 0x11, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetPartName(MusicComponent mc, long part, Str31 name) FIVEWORDINLINE(0x2F3C, 0x8, 0x12, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetPartName(MusicComponent mc, long part, Str31 name) FIVEWORDINLINE(0x2F3C, 0x8, 0x13, 0x7000, 0xA82A); extern pascal ComponentResult MusicFindTone(MusicComponent mc, ToneDescription *td, long *instrumentNumber, unsigned long *fit) FIVEWORDINLINE(0x2F3C, 0xC, 0x14, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetInstrumentNames(MusicComponent mc, long modifiableInstruments, Handle *instrumentNames, Handle *instrumentCategoryLasts, Handle *instrumentCategoryNames) FIVEWORDINLINE(0x2F3C, 0x10, 0x1B, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetDrumNames(MusicComponent mc, long modifiableInstruments, Handle *instrumentNumbers, Handle *instrumentNames) FIVEWORDINLINE(0x2F3C, 0xC, 0x1C, 0x7000, 0xA82A); extern pascal ComponentResult MusicPlayNote(MusicComponent mc, long part, long pitch, long velocity) FIVEWORDINLINE(0x2F3C, 0xC, 0x15, 0x7000, 0xA82A); extern pascal ComponentResult MusicResetPart(MusicComponent mc, long part) FIVEWORDINLINE(0x2F3C, 0x4, 0x16, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetController(MusicComponent mc, long part, long controllerNumber, long controllerValue) FIVEWORDINLINE(0x2F3C, 0xC, 0x17, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetController(MusicComponent mc, long part, long controllerNumber) FIVEWORDINLINE(0x2F3C, 0x8, 0x18, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetMIDIProc(MusicComponent mc, MusicMIDISendProcPtr *midiSendProc, long *refCon) FIVEWORDINLINE(0x2F3C, 0x8, 0x19, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetMIDIProc(MusicComponent mc, MusicMIDISendProcPtr midiSendProc, long refCon) FIVEWORDINLINE(0x2F3C, 0x8, 0x1A, 0x7000, 0xA82A); extern pascal ComponentResult MusicSetMasterTune(MusicComponent mc, Fixed masterTune) FIVEWORDINLINE(0x2F3C, 0x4, 0x1E, 0x7000, 0xA82A); extern pascal ComponentResult MusicGetMasterTune(MusicComponent mc) FIVEWORDINLINE(0x2F3C, 0, 0x1D, 0x7000, 0xA82A); typedef struct privateNoteChannel *NoteChannel; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct SynthesizerConnections { OSType clientID; OSType inputPortID; OSType outputPortID; long midiChannel; long flags; long reserved[3]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct SynthesizerConnections SynthesizerConnections; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct NoteRequest { long polyphony; Fixed typicalPolyphony; ToneDescription tone; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct NoteRequest NoteRequest; enum { kNAFirstSelector = -7, kNATargetSelect, kNARegisterSelect, kNAVersionSelect, kNACanDoSelect, kNACloseSelect, kNAOpenSelect, kNARegisterMusicDeviceSelect, kNAUnregisterMusicDeviceSelect, kNAGetRegisteredMusicDeviceSelect, kNASaveMusicConfigurationSelect, kNANewNoteChannelSelect, kNADisposeNoteChannelSelect, kNAGetNoteChannelInfoSelect, kNAPrerollNoteChannelSelect, kNAUnrollNoteChannelSelect, kNAEngageNoteChannelSelect, kNADisengageNoteChannelSelect, kNASetNoteChannelVolumeSelect, kNAResetNoteChannelSelect, kNAPlayNoteSelect, kNASetControllerSelect, kNASetKnobSelect, kNAFindNoteChannelToneSelect, kNASetNoteChannelInstrumentSelect, kNAPickInstrumentSelect, kNAPickArrangementSelect, kNAGetStatusBlockSelect, kNASetDefaultMIDIInputSelect, kNAGetDefaultMIDIInputSelect, kNAGetNoteChannelStateSelect, kNASetNoteChannelStateSelect, kNAUseDefaultMIDIInputSelect, kNALoseDefaultMIDIInputSelect, kNAStuffToneDescriptionSelect, kNACopyrightDialogSelect, kNASetFlatInstrumentSelect, kNASetInstrumentSelect, kNALastSelector }; #undef NAComponentCall #undef NAComponentError typedef ComponentInstance NoteAllocator; enum { kPickDontMix = 1, kPickSameSynth = 2 }; typedef pascal ComponentResult (*MusicMIDIReadHookProcPtr)(MusicMIDIPacket *mp, long myRefCon); enum { uppMusicMIDIReadHookProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MusicMIDIPacket*))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr MusicMIDIReadHookUPP; #define CallMusicMIDIReadHookProc(userRoutine, mp, myRefCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMusicMIDIReadHookProcInfo, (mp), (myRefCon)) #define NewMusicMIDIReadHookProc(userRoutine) \ (MusicMIDIReadHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMusicMIDIReadHookProcInfo, GetCurrentISA()) #else typedef MusicMIDIReadHookProcPtr MusicMIDIReadHookUPP; #define CallMusicMIDIReadHookProc(userRoutine, mp, myRefCon) \ (*(userRoutine))((mp), (myRefCon)) #define NewMusicMIDIReadHookProc(userRoutine) \ (MusicMIDIReadHookUPP)(userRoutine) #endif #define kNoteAllocatorType 'nota' extern pascal ComponentResult NARegisterMusicDevice(NoteAllocator na, OSType synthType, Str31 name, SynthesizerConnections *connections) FIVEWORDINLINE(0x2F3C, 0xC, 0, 0x7000, 0xA82A); extern pascal ComponentResult NAUnregisterMusicDevice(NoteAllocator na, long index) FIVEWORDINLINE(0x2F3C, 0x4, 0x1, 0x7000, 0xA82A); extern pascal ComponentResult NAGetRegisteredMusicDevice(NoteAllocator na, long index, OSType *synthType, Str31 name, SynthesizerConnections *connections, MusicComponent *mc) FIVEWORDINLINE(0x2F3C, 0x14, 0x2, 0x7000, 0xA82A); extern pascal ComponentResult NASetDefaultMIDIInput(NoteAllocator na, SynthesizerConnections *sc) FIVEWORDINLINE(0x2F3C, 0x4, 0x15, 0x7000, 0xA82A); extern pascal ComponentResult NAGetDefaultMIDIInput(NoteAllocator na, SynthesizerConnections *sc) FIVEWORDINLINE(0x2F3C, 0x4, 0x16, 0x7000, 0xA82A); extern pascal ComponentResult NASaveMusicConfiguration(NoteAllocator na) FIVEWORDINLINE(0x2F3C, 0, 0x3, 0x7000, 0xA82A); extern pascal ComponentResult NANewNoteChannel(NoteAllocator na, NoteRequest *noteRequest, NoteChannel *outChannel) FIVEWORDINLINE(0x2F3C, 0x8, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult NADisposeNoteChannel(NoteAllocator na, NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x4, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult NAGetNoteChannelInfo(NoteAllocator na, NoteChannel noteChannel, long *index, long *part) FIVEWORDINLINE(0x2F3C, 0xC, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult NAUseDefaultMIDIInput(NoteAllocator na, MusicMIDIReadHookUPP readHook, long refCon, unsigned long flags) FIVEWORDINLINE(0x2F3C, 0xC, 0x19, 0x7000, 0xA82A); extern pascal ComponentResult NALoseDefaultMIDIInput(NoteAllocator na) FIVEWORDINLINE(0x2F3C, 0, 0x1A, 0x7000, 0xA82A); extern pascal ComponentResult NAPrerollNoteChannel(NoteAllocator na, NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult NAUnrollNoteChannel(NoteAllocator na, NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x4, 0x8, 0x7000, 0xA82A); extern pascal ComponentResult NAEngageNoteChannel(NoteAllocator na, NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x4, 0x9, 0x7000, 0xA82A); extern pascal ComponentResult NADisengageNoteChannel(NoteAllocator na, NoteChannel noteChannel, long silenceNotes) FIVEWORDINLINE(0x2F3C, 0x8, 0xA, 0x7000, 0xA82A); extern pascal ComponentResult NAGetNoteChannelState(NoteAllocator na, NoteChannel noteChannel, long instrumentNumber, Handle *state) FIVEWORDINLINE(0x2F3C, 0xC, 0x17, 0x7000, 0xA82A); extern pascal ComponentResult NASetNoteChannelState(NoteAllocator na, NoteChannel noteChannel, long instrumentNumber, Handle state) FIVEWORDINLINE(0x2F3C, 0xC, 0x18, 0x7000, 0xA82A); extern pascal ComponentResult NAResetNoteChannel(NoteAllocator na, NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A); extern pascal ComponentResult NASetNoteChannelVolume(NoteAllocator na, NoteChannel noteChannel, Fixed volume) FIVEWORDINLINE(0x2F3C, 0x8, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult NASetInstrument(NoteAllocator na, NoteChannel noteChannel, InstrumentData *instrumentData) FIVEWORDINLINE(0x2F3C, 0x8, 0x1E, 0x7000, 0xA82A); extern pascal ComponentResult NASetFlatInstrument(NoteAllocator na, NoteChannel noteChannel, FlatInstrument *flatInstrument) FIVEWORDINLINE(0x2F3C, 0x8, 0x1D, 0x7000, 0xA82A); extern pascal ComponentResult NAPlayNote(NoteAllocator na, NoteChannel noteChannel, long pitch, long velocity) FIVEWORDINLINE(0x2F3C, 0xC, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult NASetController(NoteAllocator na, NoteChannel noteChannel, long controllerNumber, long controllerValue) FIVEWORDINLINE(0x2F3C, 0xC, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult NASetKnob(NoteAllocator na, NoteChannel noteChannel, long knobNumber, long knobValue) FIVEWORDINLINE(0x2F3C, 0xC, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult NAFindNoteChannelTone(NoteAllocator na, NoteChannel noteChannel, ToneDescription *td, long *instrumentNumber) FIVEWORDINLINE(0x2F3C, 0xC, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult NASetNoteChannelInstrument(NoteAllocator na, NoteChannel noteChannel, long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x8, 0x11, 0x7000, 0xA82A); extern pascal ComponentResult NAPickInstrument(NoteAllocator na, ModalFilterUPP filterProc, StringPtr prompt, ToneDescription *sd, unsigned long flags, long refCon, Ptr *flatList, long *flatChoiceIndex) FIVEWORDINLINE(0x2F3C, 0x1C, 0x12, 0x7000, 0xA82A); extern pascal ComponentResult NAStuffToneDescription(NoteAllocator na, long gmNumber, ToneDescription *td) FIVEWORDINLINE(0x2F3C, 0x8, 0x1B, 0x7000, 0xA82A); extern pascal ComponentResult NAPickArrangement(NoteAllocator na, ModalFilterUPP filterProc, StringPtr prompt, long partCount, NoteRequest *noteRequestList, Track t, StringPtr songName) FIVEWORDINLINE(0x2F3C, 0x18, 0x13, 0x7000, 0xA82A); extern pascal ComponentResult NACopyrightDialog(NoteAllocator na, PicHandle p, StringPtr author, StringPtr copyright, StringPtr other, StringPtr title, ModalFilterUPP filterProc, long refCon) FIVEWORDINLINE(0x2F3C, 0x1C, 0x1C, 0x7000, 0xA82A); #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct NAStatPiece { Str31 clientName; Str31 synthesizerName; long part; long midiChannel; long polyphony; long valid; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct NAStatPiece NAStatPiece; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct NAStat { long pieceCount; NAStatPiece piece[64]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct NAStat NAStat; extern pascal ComponentResult NAGetStatusBlock(NoteAllocator na, NAStat *stat) FIVEWORDINLINE(0x2F3C, 0x4, 0x14, 0x7000, 0xA82A); #define kTuneQueueDepth 8 #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TuneStatus { unsigned long *tune; unsigned long *tunePtr; TimeValue time; short queueCount; short queueSpots; TimeValue queueTime; long reserved[3]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TuneStatus TuneStatus; #define kStopTuneFade 1 #define kStopTuneSustain 2 #define kStopTuneInstant 4 #define kStopTuneReleaseChannels 8 enum { kTuneSelect = 3, kTuneSetHeaderSelect, kTuneGetTimeBaseSelect, kTuneSetTimeScaleSelect, kTuneGetTimeScaleSelect, kTuneGetIndexedNoteChannelSelect, kTuneDummy, kTuneQueueSelect, kTuneInstantSelect, kTuneGetStatusSelect, kTuneStopSelect, kTuneResumeSelect, kTuneFlushSelect, kTuneSetVolumeSelect, kTuneGetVolumeSelect, kTunePrerollSelect, kTuneUnrollSelect, kTuneLastSelector }; typedef pascal void (*TuneCallBackProcPtr)(const TuneStatus *status, long refCon); enum { uppTuneCallBackProcInfo = kPascalStackBased | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TuneStatus*))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) }; #if USESROUTINEDESCRIPTORS typedef UniversalProcPtr TuneCallBackUPP; #define CallTuneCallBackProc(userRoutine, status, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppTuneCallBackProcInfo, (status), (refCon)) #define NewTuneCallBackProc(userRoutine) \ (TuneCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTuneCallBackProcInfo, GetCurrentISA()) #else typedef TuneCallBackProcPtr TuneCallBackUPP; #define CallTuneCallBackProc(userRoutine, status, refCon) \ (*(userRoutine))((status), (refCon)) #define NewTuneCallBackProc(userRoutine) \ (TuneCallBackUPP)(userRoutine) #endif typedef ComponentInstance TunePlayer; #define kMaxTunePlayerParts 32 #define kTunePlayerType 'tune' extern pascal ComponentResult TuneSetHeader(TunePlayer tp, unsigned long *header) FIVEWORDINLINE(0x2F3C, 0x4, 0x4, 0x7000, 0xA82A); extern pascal ComponentResult TuneGetTimeBase(TunePlayer tp, TimeBase *tb) FIVEWORDINLINE(0x2F3C, 0x4, 0x5, 0x7000, 0xA82A); extern pascal ComponentResult TuneSetTimeScale(TunePlayer tp, TimeScale scale) FIVEWORDINLINE(0x2F3C, 0x4, 0x6, 0x7000, 0xA82A); extern pascal ComponentResult TuneGetTimeScale(TunePlayer tp, TimeScale *scale) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); extern pascal ComponentResult TuneGetIndexedNoteChannel(TunePlayer tp, long i, NoteChannel *nc) FIVEWORDINLINE(0x2F3C, 0x8, 0x8, 0x7000, 0xA82A); enum { kTuneStartNow = 1, kTuneDontClipNotes = 2, kTuneExcludeEdgeNotes = 4, kTuneStartNewMaster = 16384 }; extern pascal ComponentResult TuneQueue(TunePlayer tp, unsigned long *tune, Fixed tuneRate, unsigned long tuneStartPosition, unsigned long tuneStopPosition, unsigned long queueFlags, TuneCallBackUPP callBackProc, long refCon) FIVEWORDINLINE(0x2F3C, 0x1C, 0xA, 0x7000, 0xA82A); extern pascal ComponentResult TuneInstant(TunePlayer tp, unsigned long *tune, long tunePosition) FIVEWORDINLINE(0x2F3C, 0x8, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult TuneGetStatus(TunePlayer tp, TuneStatus *status) FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A); enum { kStopSustain = 1, kStopFadeout = 2 }; extern pascal ComponentResult TuneStop(TunePlayer tp, long stopFlags) FIVEWORDINLINE(0x2F3C, 0x4, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult TuneResume(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult TuneFlush(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult TuneSetVolume(TunePlayer tp, Fixed volume) FIVEWORDINLINE(0x2F3C, 0x4, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult TuneGetVolume(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0, 0x11, 0x7000, 0xA82A); extern pascal ComponentResult TunePreroll(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0, 0x12, 0x7000, 0xA82A); extern pascal ComponentResult TuneUnroll(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0, 0x13, 0x7000, 0xA82A); #ifndef __MusicTrackEvent__ #define __MusicTrackEvent__ typedef unsigned long MusicOpWord, *MusicOpWordPtr; #define kRestEventType 0x0L #define kNoteEventType 0x1L #define kControlEventType 0x2L #define kMarkerEventType 0x3L #define kUndefined1EventType 0x8L #define kXNoteEventType 0x9L #define kXControlEventType 0xAL #define kKnobEventType 0xBL #define kUndefined2EventType 0xCL #define kUndefined3EventType 0xDL #define kUndefined4EventType 0xEL #define kGeneralEventType 0xFL #define kXEventLengthBits 0x2L #define kGeneralEventLengthBits 0x3L #define kEventLen 1L #define kXEventLen 2L #define kRestEventLen kEventLen #define kNoteEventLen kEventLen #define kControlEventLen kEventLen #define kMarkerEventLen kEventLen #define kXNoteEventLen kXEventLen #define kXControlEventLen kXEventLen #define kGeneralEventLen kXEventLen #define kEventLengthFieldPos 30 #define kEventLengthFieldWidth 2 #define kEventTypeFieldPos 29 #define kEventTypeFieldWidth 3 #define kXEventTypeFieldPos 28 #define kXEventTypeFieldWidth 4 #define kEventInstrumentFieldPos 24 #define kEventInstrumentFieldWidth 5 #define kXEventInstrumentFieldPos 16 #define kXEventInstrumentFieldWidth 12 #define kRestEventDurationFieldPos 0 #define kRestEventDurationFieldWidth 24 #define kRestEventDurationMax ((1 << kRestEventDurationFieldWidth) - 1) #define kNoteEventPitchFieldPos 18 #define kNoteEventPitchFieldWidth 6 #define kNoteEventPitchOffset 32 #define kNoteEventVolumeFieldPos 11 #define kNoteEventVolumeFieldWidth 7 #define kNoteEventVolumeOffset 0 #define kNoteEventDurationFieldPos 0 #define kNoteEventDurationFieldWidth 11 #define kNoteEventDurationMax ((1 << kNoteEventDurationFieldWidth) - 1) #define kXNoteEventPitchFieldPos 0 #define kXNoteEventPitchFieldWidth 16 #define kXNoteEventDurationFieldPos 0 #define kXNoteEventDurationFieldWidth 22 #define kXNoteEventDurationMax ((1 << kXNoteEventDurationFieldWidth) - 1) #define kXNoteEventVolumeFieldPos 22 #define kXNoteEventVolumeFieldWidth 7 #define kControlEventControllerFieldPos 16 #define kControlEventControllerFieldWidth 8 #define kControlEventValueFieldPos 0 #define kControlEventValueFieldWidth 16 #define kXControlEventControllerFieldPos 0 #define kXControlEventControllerFieldWidth 16 #define kXControlEventValueFieldPos 0 #define kXControlEventValueFieldWidth 16 #define kKnobEventValueHighFieldPos 0 #define kKnobEventValueHighFieldWidth 16 #define kKnobEventKnobFieldPos 16 #define kKnobEventKnobFieldWidth 14 #define kKnobEventValueLowFieldPos 0 #define kKnobEventValueLowFieldWidth 16 #define kMarkerEventSubtypeFieldPos 16 #define kMarkerEventSubtypeFieldWidth 8 #define kMarkerEventValueFieldPos 0 #define kMarkerEventValueFieldWidth 16 #define kGeneralEventSubtypeFieldPos 16 #define kGeneralEventSubtypeFieldWidth 14 #define kGeneralEventLengthFieldPos 0 #define kGeneralEventLengthFieldWidth 16 #define MASK(bitWidth) ((1 << (bitWidth)) - 1) #define EXT(val, pos, width) (((val) >> (pos)) & MASK(width)) #define _EventLength(x) ((EXT(x, kEventLengthFieldPos, \ kEventLengthFieldWidth) < 2) ? 1 : \ ((EXT(x, kEventLengthFieldPos, kEventLengthFieldWidth) == 2) ? 2 : \ EXT(x, kGeneralEventLengthFieldPos, kGeneralEventLengthFieldWidth))) #define _EventType(x) ((EXT(x, kEventTypeFieldPos, kEventTypeFieldWidth) > 3) ? EXT(x, kXEventTypeFieldPos, kXEventTypeFieldWidth) : EXT(x, kEventTypeFieldPos, kEventTypeFieldWidth)) #define _RestDuration(x) (EXT(x, kRestEventDurationFieldPos, kRestEventDurationFieldWidth)) #define _Instrument(x) (EXT(x, kEventInstrumentFieldPos, kEventInstrumentFieldWidth)) #define _XInstrument(m, l) (EXT(m, kXEventInstrumentFieldPos, kXEventInstrumentFieldWidth)) #define _NotePitch(x) (EXT(x, kNoteEventPitchFieldPos, kNoteEventPitchFieldWidth) + kNoteEventPitchOffset) #define _NoteVolume(x) (EXT(x, kNoteEventVolumeFieldPos, kNoteEventVolumeFieldWidth) + kNoteEventVolumeOffset) #define _NoteDuration(x) (EXT(x, kNoteEventDurationFieldPos, kNoteEventDurationFieldWidth)) #define _NoteVelocity _NoteVolume #define _XNotePitch(m, l) (EXT(m, kXNoteEventPitchFieldPos, kXNoteEventPitchFieldWidth)) #define _XNoteVolume(m, l) (EXT(l, kXNoteEventVolumeFieldPos, kXNoteEventVolumeFieldWidth)) #define _XNoteDuration(m, l) (EXT(l, kXNoteEventDurationFieldPos, kXNoteEventDurationFieldWidth)) #define _XNoteVelocity _XNoteVolume #define _ControlController(x) (EXT(x, kControlEventControllerFieldPos, kControlEventControllerFieldWidth)) #define _ControlValue(x) (EXT(x, kControlEventValueFieldPos, kControlEventValueFieldWidth)) #define _XControlController(m, l) (EXT(m, kXControlEventControllerFieldPos, kXControlEventControllerFieldWidth)) #define _XControlValue(m, l) (EXT(m, kXControlEventValueFieldPos, kXControlEventValueFieldWidth)) #define _MarkerSubtype(x) (EXT(x,kMarkerEventSubtypeFieldPos,kMarkerEventSubtypeFieldWidth)) #define _MarkerValue(x) (EXT(x, kMarkerEventValueFieldPos, kMarkerEventValueFieldWidth)) #define _KnobValue(m, l) ((EXT(m,kKnobEventValueHighFieldPos,kKnobEventValueHighFieldWidth) << 16) \ | (EXT(l,kKnobEventValueLowFieldPos,kKnobEventValueLowFieldWidth))) #define _KnobKnob(m, l) (EXT(l,kKnobEventKnobFieldPos,kKnobEventKnobFieldWidth)) #define _GeneralSubtype(m, l) (EXT(l,kGeneralEventSubtypeFieldPos,kGeneralEventSubtypeFieldWidth)) #define _GeneralLength(m, l) (EXT(m,kGeneralEventLengthFieldPos,kGeneralEventLengthFieldWidth)) #define _StuffRestEvent(x, duration) \ x = (kRestEventType << kEventTypeFieldPos) \ | ((long)(duration) << kRestEventDurationFieldPos) #define _StuffNoteEvent(x, instrument, pitch, volume, duration) \ x = (kNoteEventType << kEventTypeFieldPos) \ | ((long)(instrument) << kEventInstrumentFieldPos) \ | (((long)(pitch) - kNoteEventPitchOffset) << kNoteEventPitchFieldPos) \ | (((long)(volume) - kNoteEventVolumeOffset) << kNoteEventVolumeFieldPos) \ | ((long)(duration) << kNoteEventDurationFieldPos) #define _StuffControlEvent(x, instrument, control, value) \ x = (kControlEventType << kEventTypeFieldPos) \ | ((long)(instrument) << kEventInstrumentFieldPos) \ | ((long)(control) << kControlEventControllerFieldPos) \ | ((long)((value) & MASK(kControlEventValueFieldWidth)) << kControlEventValueFieldPos) #define _StuffXNoteEvent(w1, w2, instrument, pitch, volume, duration) \ w1 = (kXNoteEventType << kXEventTypeFieldPos) \ | ((long)(instrument) << kXEventInstrumentFieldPos) \ | ((long)(pitch) << kXNoteEventPitchFieldPos), \ w2 = (kXEventLengthBits << kEventLengthFieldPos) \ | ((long)(duration) << kXNoteEventDurationFieldPos) \ | ((long)(volume) << kXNoteEventVolumeFieldPos) #define _StuffXControlEvent(w1, w2, instrument, control, value) \ w1 = (kXControlEventType << kXEventTypeFieldPos) \ | ((long)(instrument) << kXEventInstrumentFieldPos) \ | ((long)((value) & MASK(kXControlEventValueFieldWidth)) << kXControlEventValueFieldPos), \ w2 = (kXEventLengthBits << kEventLengthFieldPos) \ | ((long)(control) << kXControlEventControllerFieldPos) #define _StuffKnobEvent(w1, w2, instrument, knob, value) \ w1 = (kKnobEventType << kXEventTypeFieldPos) \ | ((long)(instrument) << kXEventInstrumentFieldPos) \ | ((long)(value >> 16) << kKnobEventValueLowFieldPos), \ w2 = (kXEventLengthBits << kEventLengthFieldPos) \ | ((long)(knob) << kKnobEventKnobFieldPos) \ | ((long)(value & 0xFFFF) << kKnobEventValueLowFieldPos) #define _StuffGeneralEvent(w1, w2, instrument, subType, length) \ w1 = (kGeneralEventType << kXEventTypeFieldPos) \ | ((long)(instrument) << kXEventInstrumentFieldPos) \ | ((long)(length) << kGeneralEventLengthFieldPos), \ w2 = (kGeneralEventLengthBits << kEventLengthFieldPos) \ | ((long)(subType) << kGeneralEventSubtypeFieldPos) \ | ((long)(length) << kGeneralEventLengthFieldPos) #define kGeneralEventNoteRequest 1 #define kGeneralEventInstrument 2 #define kGeneralEventFlatInstrument 3 #define kGeneralEventPartName 4 #define kGeneralEventPartKey 5 #endif #ifndef _TimeCodeMediaHandler_ #define _TimeCodeMediaHandler_ #define TimeCodeMediaType 'tmcd' #define TCSourceRefNameType 'name' enum { tcDropFrame = 1 << 0, tc24HourMax = 1 << 1, tcNegTimesOK = 1 << 2, tcCounter = 1 << 3 }; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TimeCodeDef { long flags; TimeScale fTimeScale; TimeValue frameDuration; unsigned char numFrames; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TimeCodeDef TimeCodeDef; enum { tctNegFlag = 0x80 }; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TimeCodeTime { unsigned char hours; unsigned char minutes; unsigned char seconds; unsigned char frames; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TimeCodeTime TimeCodeTime; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TimeCodeCounter { long counter; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TimeCodeCounter TimeCodeCounter; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif union TimeCodeRecord { TimeCodeTime t; TimeCodeCounter c; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef union TimeCodeRecord TimeCodeRecord; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TimeCodeDescription { long descSize; long dataFormat; long resvd1; short resvd2; short dataRefIndex; long flags; TimeCodeDef timeCodeDef; long srcRef[1]; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TimeCodeDescription TimeCodeDescription; typedef TimeCodeDescription *TimeCodeDescriptionPtr; typedef TimeCodeDescriptionPtr *TimeCodeDescriptionHandle; enum { tcdfShowTimeCode = 1 << 0 }; enum { kTCGetCurrentTimeCodeSelect = 257, kTCGetTimeCodeAtTimeSelect, kTCTimeCodeToStringSelect, kTCTimeCodeToFrameNumberSelect, kTCFrameNumberToTimeCodeSelect, kTCGetSourceRefSelect, kTCSetSourceRefSelect, kTCSetTimeCodeFlagsSelect, kTCGetTimeCodeFlagsSelect, kTCSetDisplayOptionsSelect, kTCGetDisplayOptionsSelect }; #if defined(powerc) || defined (__powerc) #pragma options align=mac68k #endif struct TCTextOptions { short txFont; short txFace; short txSize; RGBColor foreColor; RGBColor backColor; }; #if defined(powerc) || defined(__powerc) #pragma options align=reset #endif typedef struct TCTextOptions TCTextOptions; typedef TCTextOptions *TCTextOptionsPtr; extern pascal HandlerError TCGetCurrentTimeCode(MediaHandler mh, long *frameNum, TimeCodeDef *tcdef, TimeCodeRecord *tcrec, UserData *srcRefH) FIVEWORDINLINE(0x2F3C, 0x10, 0x101, 0x7000, 0xA82A); extern pascal HandlerError TCGetTimeCodeAtTime(MediaHandler mh, TimeValue mediaTime, long *frameNum, TimeCodeDef *tcdef, TimeCodeRecord *tcdata, UserData *srcRefH) FIVEWORDINLINE(0x2F3C, 0x14, 0x102, 0x7000, 0xA82A); extern pascal HandlerError TCTimeCodeToFrameNumber(MediaHandler mh, TimeCodeDef *tcdef, TimeCodeRecord *tcrec, long *frameNumber) FIVEWORDINLINE(0x2F3C, 0xC, 0x104, 0x7000, 0xA82A); extern pascal HandlerError TCFrameNumberToTimeCode(MediaHandler mh, long frameNumber, TimeCodeDef *tcdef, TimeCodeRecord *tcrec) FIVEWORDINLINE(0x2F3C, 0xC, 0x105, 0x7000, 0xA82A); extern pascal HandlerError TCTimeCodeToString(MediaHandler mh, TimeCodeDef *tcdef, TimeCodeRecord *tcrec, StringPtr tcStr) FIVEWORDINLINE(0x2F3C, 0xC, 0x103, 0x7000, 0xA82A); extern pascal HandlerError TCGetSourceRef(MediaHandler mh, TimeCodeDescriptionHandle tcdH, UserData *srefH) FIVEWORDINLINE(0x2F3C, 0x8, 0x106, 0x7000, 0xA82A); extern pascal HandlerError TCSetSourceRef(MediaHandler mh, TimeCodeDescriptionHandle tcdH, UserData srefH) FIVEWORDINLINE(0x2F3C, 0x8, 0x107, 0x7000, 0xA82A); extern pascal HandlerError TCSetTimeCodeFlags(MediaHandler mh, long flags, long flagsMask) FIVEWORDINLINE(0x2F3C, 0x8, 0x108, 0x7000, 0xA82A); extern pascal HandlerError TCGetTimeCodeFlags(MediaHandler mh, long *flags) FIVEWORDINLINE(0x2F3C, 0x4, 0x109, 0x7000, 0xA82A); extern pascal HandlerError TCSetDisplayOptions(MediaHandler mh, TCTextOptionsPtr textOptions) FIVEWORDINLINE(0x2F3C, 0x4, 0x10A, 0x7000, 0xA82A); extern pascal HandlerError TCGetDisplayOptions(MediaHandler mh, TCTextOptionsPtr textOptions) FIVEWORDINLINE(0x2F3C, 0x4, 0x10B, 0x7000, 0xA82A); #endif #endif